2017-05-17 113 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響應。 –