웹 서비스를 호출하고 JSON 응답을 다시 객체로 직렬화하는 일반 함수가 있습니다.
class func invokeService<T>(service: String, withParams params: Dictionary<String, String>, returningClass: AnyClass, completionHandler handler: ((T) -> ())) {
/* Construct the URL, call the service and parse the response */
}
내가 달성하려는 것은이 Java 코드와 같습니다.
public <T> T invokeService(final String serviceURLSuffix, final Map<String, String> params,
final Class<T> classTypeToReturn) {
}
- 내가 성취하려고하는 것에 대한 메소드 서명이 올바른가?
- 더 구체적
AnyClass
으로, 매개 변수 유형으로 지정 하는 것이 올바른 일입니까? - 메서드를 호출하면
MyObject.self
returningClass 값으로 전달 되지만 컴파일 오류 "식의 유형 '()'을 'String'으로 변환 할 수 없습니다."
CastDAO.invokeService("test", withParams: ["test" : "test"], returningClass: CityInfo.self) { cityInfo in /*...*/
}
편집하다:
나는 사용하여 시도 object_getClass
holex에서 언급 한 바와 같이,하지만 지금은 얻을 :
오류 : " 'CityInfo.Type'유형이 'AnyObject'프로토콜을 준수하지 않습니다."
프로토콜을 준수하기 위해 무엇을해야합니까?
class CityInfo : NSObject {
var cityName: String?
var regionCode: String?
var regionName: String?
}
CastDAO.invokeService("test", withParams: ["test" : "test"]) { (ci:CityInfo) in }