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"]
NSManagedObject
是NSObject
的子类,因此它可以像您的带有 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 中提供类级别/字段级别注释时工作
程序包com.baomidou.mybatisplus.core.mapper不存在
.Net core 利用Npoi.Mapper 生成Excel
导入 Jackson-Core-1.x.x 和 Jackson-Mapper-1.x.x 时,我在打包 APK 错误时收到重复文件