我尝试使用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?
答案 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