我有一个通用函数,调用Web服务并将JSON响应序列化回对象。
我将尝试实现的目标是与此Java代码等效。
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
作为返回类传递给它,但是我得到了编译错误"无法将表达式的类型“()”转换为类型“String”"
CastDAO.invokeService("test", withParams: ["test" : "test"], returningClass: CityInfo.self) { cityInfo in /*...*/
}
编辑:
我尝试使用 holex 提到的 object_getClass
,但是现在我得到了以下错误信息:
错误:"类型 'CityInfo.Type' 未遵循协议 'AnyObject'"
需要做什么来遵循该协议?
class CityInfo : NSObject {
var cityName: String?
var regionCode: String?
var regionName: String?
}
CastDAO.invokeService("test", withParams: ["test" : "test"]) { (ci:CityInfo) in }
- Christian Dietrich