我有一个通用函数,该函数调用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 }