2017-05-17 76 views
4

让我们从我的问题的背景开始。对象映射器类用于在核心数据中存储数据

我有一个用于分析JSON响应

class Person: NSObject, Mappable { 

     var ID : String? 
     var firstName : String? 
     var lastName : String? 

     convenience required init?(map: Map) { 
       self.init() 

      } 

      func mapping(map: Map) { 
       patientsCount <- map["patientsCount"] 
       status <- map["status"] 
       message <- map["Message"] 
       patientSearchArray <- map["patientsList_JSON"] 
      } 
    } 

但另一方面,我有一个用于保存记录在CoreData

 @objc(Event) 
     class PersonMO: NSManagedObject { 

     @NSManaged var ID : String? 
     @NSManaged var firstName : String? 
     @NSManaged var lastName : String? 

    } 

现在到另一个类的名字PersonMO一个Person类以重点。我面临的问题是我必须为一个目的创建两个不同的类。就像当JSON来形式Server Side然后我必须解析它到Person类,然后我想将Person保存到Core Data因为我必须将Person类对象转换为PersonMO类对象。这似乎是一个不好的做法。 有什么办法只用一个类Person将用于解析JSON,同时我想用Person类来存储数据到核心数据中。

+0

它看起来不像ObjectMappper支持这一点。但是ObjectMappper是开源的,所以你可以修改它并发送一个拉取请求来包含你的改变。 –

+0

你有没有找到一个解决方案,如果是这样,请分享,因为我面临着同样的问题。 – rmp

回答

0

单一的Person这样的类应该够用了,都可以满足这两种情况。

class Person: NSManagedObject, Mappable { 

@NSManaged var ID : String? 
@NSManaged var firstName : String? 
@NSManaged var lastName : String? 

convenience required init?(map: Map) { 
    self.init() 

} 

func mapping(map: Map) { 
    patientsCount <- map["patientsCount"] 
    status <- map["status"] 
    message <- map["Message"] 
    patientSearchArray <- map["patientsList_JSON"] 
} 
} 

NSManagedObjectNSObject子类,所以它可以用来就像使用可映射你的Person类。 @NSManaged表示它由CoreData管理,但它仍然可以像正常变量一样使用。

+0

我已经尝试过这种方法。当您将NSManagedObject设置为父类时,您必须实现NSManagedObject的init方法,那么init?(map:Map)方法不会调用。所以也映射(地图:地图)也不会被调用。 –

+0

您使用哪个库进行映射?想知道如何初始化?(地图:地图)被称为 –

+0

我使用ObjectMappper来解析JSON响应。 –