Как создать формат 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

Другие вопросы по тегам