2016-08-04 76 views
0

我尝试使用对象映射器从领域结果创建JSON格式。所以,我创建了两个通用方法来实现这一点。最前一页方法创建数组形式Results,看起来像:如何使用对象映射器从领域“结果”创建JSON格式

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 
} 

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

您有任何疑问如何在Realm中创建来自Result的JSON?

回答

0

首先,makeAnArrayFromResults<T>真的只是map

let someRealmResults: Results<Project>? 
... 
let array = someRealmResults?.map { $0 } // => [Project]? 

至于对象映射器整合得好,它看起来像你没有定义满足[Person]第一个参数类型约束的toJSONString功能。

在Object Mapper的问题跟踪器中有关与Realm的互操作性的讨论颇多,您可能会发现它很有用:https://github.com/Hearst-DD/ObjectMapper/issues/475