如何使用Object Mapper从Realm“Results”创建JSON格式

时间:2016-08-04 18:21:15

标签: json swift realm objectmapper

我尝试使用Object Mapper从Realm Results创建JSON格式。所以,我创建了两个通用的方法来做到这一点。 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对象,但是当我尝试这样做时,我收到错误并且不知道如何解决它。我的第二种方法看起来像这样:

func createJSON<T: Object>(object: T.Type){
    let array = makeAnArrayFromResults(object)
    let json = Mapper().toJSONString(array!, prettyPrint: true) //here error
}

错误信息:无法使用类型为“([T],prettyPrint:Bool)”的参数列表调用“toJSONString”。

您是否有任何sugestions如何在Realm中从Result创建JSON?

1 个答案:

答案 0 :(得分:0)

首先,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