gpt4 book ai didi

ios - 如何实现符合Mappable的NSManagedObject类

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:07 25 4
gpt4 key购买 nike

我有一个类直接映射 JSON 实现 Mappable (ObjectMapper Framework) 协议(protocol),我试图从 NSManagedObject 继承。

class AbstractModel: NSManagedObject, Mappable {

@NSManaged var uuid: String?
@NSManaged var updatedAt: String?
@NSManaged var createdAt: String?

required init?(_ map: Map) {
mapping(map)
}

func mapping(map: Map) {
uuid <- map["uuid"]
updatedAt <- map["updatedAt"]
createdAt <- map["createdAt"]

}
}

此实现的问题是编译器提示在 super 初始化器之前使用 self 的 mapping(map):AbstractModel.swift:19:9:在 super.init 初始化 self 之前在方法调用“mapping”中使用“self”

不幸的是,我无法在 mapping(map) 之前调用 super 初始化器 (super.init(entity: NSEntityDescription, insertIntoManagedObjectContext: NSManagedObjectContext?)) 因为我需要 self 获取 NSManagedObjectContext

我该如何解决这个问题?

最佳答案

我不确定这个解决方案是否是解决问题的正确方法,但我以这种方式实现了我的类(class)并且它有效:

class AbstractModel: NSManagedObject, Mappable {

@NSManaged var uuid: String?
@NSManaged var updatedAt: String?
@NSManaged var createdAt: String?

override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?) {
super.init(entity: entity, insertIntoManagedObjectContext: DBUtils().getManagedObjectContext())
}

required init?(_ map: Map) {
var ctx = NSManagedObjectContext.MR_defaultContext()
var entity = NSEntityDescription.entityForName("AbstractModel", inManagedObjectContext: ctx)
super.init(entity: entity!, insertIntoManagedObjectContext: ctx)

mapping(map)
}

func mapping(map: Map) {
uuid <- map["uuid"]
updatedAt <- map["updatedAt"]
createdAt <- map["createdAt"]

}
}

关于ios - 如何实现符合Mappable的NSManagedObject类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30212301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com