Object Mapper类用于在Core Data中存储数据

时间:2017-05-17 08:58:21

标签: ios swift core-data objectmapper

让我从问题的背景开始。

我有一个Person类,用于解析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"]
            }
    }

在另一方面,我有另一个类名PersonMO,用于保存CoreData

中的记录
        @objc(Event)
        class PersonMO: NSManagedObject {

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

    }

现在谈到要点。我面临的问题是我必须为一个目的创建两个不同的类。就像JSON来自Server Side时,我必须将其解析为Person类,然后我想将Person保存到Core Data中,因为我有将Person类对象转换为PersonMO类对象。这似乎是一种不好的做法。 是否有任何方法只使用一个类Person将用于解析JSON,同时我想使用该Person类将数据存储在Core Data中。

1 个答案:

答案 0 :(得分: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的子类,因此可以像使用Mappable的Person类一样使用它。 @NSManaged表示它由CoreData管理,仍然可以像普通变量一样使用。