Как передать тип класса в качестве параметра функции
У меня есть общая функция, которая вызывает веб-сервис и сериализует ответ 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?
}