Есть ли способ в Swift взять экземпляр AnyClass
и использовать его для объявления массива этого типа?Swift Объявленный типизированный массив из объекта AnyClass
Например, я использую Overcoat и Mantle для сопоставления ответов JSON с моделями, которые сохраняются в CoreData с помощью фреймворков. Прежде чем выполнить запрос get, я вручную выполняю запрос выборки в контексте Core Data и получаю обратно все сохраненные модели. Затем я должен использовать MTLManagedObjectAdapter
, который превращает NSManagedObjects
в простые модели и обратно, чтобы отобразить результаты запроса на выборку в мои объекты модели.
С этой целью я сделал функцию, что я определил в классе базовой модели:
class func mapResults(results: [NSManagedObject], toModelClass modelClass: AnyClass) -> ([AnyObject], [NSError?]) {
var transformed: [AnyObject] = []
var errors: [NSError?] = []
for result in results {
var error: NSError? = nil
var model: AnyObject! = MTLManagedObjectAdapter.modelOfClass(modelClass, fromManagedObject: result, error: &error)
transformed.append(model)
errors.append(error)
}
return (transformed, errors)
}
Я хотел бы быть в состоянии объявленной transformed
var transformed: [modelClass] = []
, как, но по понятным причинам не работает. Есть ли способ конвертировать этот объект AnyClass
в тип или он просто невозможен прямо сейчас в Swift?
Это фантастика, я совершенно забыл о дженериках. – barndog