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

Posted

技术标签:

【中文标题】Object Mapper 类用于在 Core Data 中存储数据【英文标题】:Object Mapper class use to store data in Core Data 【发布时间】:2017-10-16 15:16:45 【问题描述】:

让我们从我的问题背景开始。

我有一个 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 类对象转换为@987654333 @类对象。这似乎是一个不好的做法。 有什么办法可以只使用一个类Person 来解析JSON,同时我想用那个Person 类在Core Data 中存储数据。

【问题讨论】:

ObjectMappper 好像不支持这个。但 ObjectMappper 是开源的,因此您可以对其进行修改并发送拉取请求以合并您的更改。 你有没有找到解决方案,如果有,请分享,因为我面临同样的问题。 【参考方案1】:

像这样的单个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 管理,仍然可以像普通变量一样使用。

【讨论】:

我已经尝试过这种方法。当您将 NSManagedObject 设置为 Parent 类时,您必须实现 NSManagedObject 的 init 方法,然后 init?(map: Map) 方法不会调用。所以也不会调用mapping(map: Map)。 您使用什么库进行映射?想知道如何调用 init?(map: Map) 我正在使用 ObjectMappper 解析 JSON 响应。

以上是关于Object Mapper 类用于在 Core Data 中存储数据的主要内容,如果未能解决你的问题,请参考以下文章

Jackson Object Mapper 在提供扩展配置时不工作,但在 Spring Boot 中提供类级别/字段级别注释时工作

理解ASP.NET Core

程序包com.baomidou.mybatisplus.core.mapper不存在

spring boot 使用通用mapper

.Net core 利用Npoi.Mapper 生成Excel

导入 Jackson-Core-1.x.x 和 Jackson-Mapper-1.x.x 时,我在打包 APK 错误时收到重复文件