Я расширил Observable для RxSwift, и я использую его с Мойей, поэтому я выписал его так:
/// JSON map to object
/// - returns: Observable<T>
func jsonMapObject<T: EVReflectable>(type: T.Type, forKeyPath: String? = nil) -> Observable<Result<T, ORMError>> {
return self.map { rawResult in
guard let result = rawResult as? Result<JSON, ORMError> else {
return .failure(ORMError.ORMParseJSONError)
}
switch result {
case let .success(json):
guard json != JSON.null,
let dict = json.dictionaryObject else {
return .failure(ORMError.ORMParseJSONError)
}
guard let object: T = self.dictMap(from: dict) as T else {
return .failure(ORMError.ORMCouldNotMakeObjectError)
}
return .success(object)
case let .failure(error):
return .failure(error)
}
}
}
после написания этого кода как такового, в редакторе появляется ошибка: 1004 *
Метод экземпляра 'dictMap (from: forKeyPath :)' требует, чтобы 'NSObject' соответствовал 'EVReflectable'
Я не знаю, как действовать снова, поскольку эта ошибка не исчезла
моя dictMap записывается как
///
Create the object from the dictionary
internal func dictMap<T: NSObject>(from: NSDictionary?, forKeyPath: String? = nil) -> T where T: EVReflectable{
let instance: T = T()
let parsedObject: T = ((instance.getSpecificType(from ?? NSDictionary()) as? T) ?? instance)
let _ = EVReflection.setPropertiesfromDictionary(from ?? NSDictionary(), anyObject: parsedObject, forKeyPath: forKeyPath)
// if self.statusCode > 300 {
// instance.addStatusMessage(DeserializationStatus.Custom, message: "HTTP status code: \(self.statusCode)")
// }
return parsedObject
}