У меня есть общая функция, которая вызывает веб-сервис и сериализует ответ 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
указыватьAnyClass
в качестве типа параметра? - При вызове метода я
MyObject.self
в качестве значенияMyObject.self
, но получаю ошибку компиляции "Невозможно преобразовать тип выражения"() "в тип" 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?
}