Webサービスを呼び出し、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 }