Как создать формат JSON из области "Результаты" с помощью Object Mapper
Я пытаюсь создать формат JSON из результатов Realm, используя Object Mapper. Итак, я создал два общих метода для этого. Fisrt метод создания формы массива Results
и выглядит так:
var allRealmData: Results<Project>? // in this variable I save all Project Objects first
func makeAnArrayFromResults<T>(object: T.Type) -> [T]?{
var array = [T]()
guard let mainArray = allRealmData else { return nil }
for i in mainArray {
if let object = i as? T {
array.append(object)
}
}
return array
}
тогда я хотел бы использовать Object Mapper
чтобы изменить этот массив на JSON Object, но когда я пытаюсь это сделать, я получаю сообщение об ошибке и не знаю, как его решить. Мой второй метод выглядит так:
func createJSON<T: Object>(object: T.Type){
let array = makeAnArrayFromResults(object)
let json = Mapper().toJSONString(array!, prettyPrint: true) //here error
}
информация об ошибке: Невозможно вызвать "toJSONString" со списком аргументов типа "([T], prettyPrint: Bool)".
У вас есть предложения, как я могу создать JSON из Result
в царстве?
1 ответ
Во-первых, makeAnArrayFromResults<T>
действительно просто map
:
let someRealmResults: Results<Project>?
...
let array = someRealmResults?.map { $0 } // => [Project]?
Что касается интеграции Object Mapper, похоже, у вас нет toJSONString
определенная функция, которая удовлетворяет ограничениям первого типа аргумента [Person]
,
В системе отслеживания проблем Object Mapper довольно много дискуссий о совместимости с Realm, которые могут оказаться полезными: https://github.com/Hearst-DD/ObjectMapper/issues/475