首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现符合可映射性的NSManagedObject类

如何实现符合可映射性的NSManagedObject类
EN

Stack Overflow用户
提问于 2015-05-13 10:34:50
回答 1查看 1.1K关注 0票数 6

我有一个直接映射实现Mappable (ObjectMapper框架)协议的JSON类,我正在尝试从NSManagedObject继承。

代码语言:javascript
复制
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"]

}
}

这个实现的问题是编译器抱怨在超级初始化程序:mapping(map)之前使用self的AbstractModel.swift:19:9: Use of 'self' in method call 'mapping' before super.init initializes self

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

我该怎么解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-20 05:08:59

我不确定这个解决方案是否是解决问题的正确方法,但我以这种方式实现了我的类,它起了作用:

代码语言:javascript
复制
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"]

}
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30212301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档