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

我有一个直接映射 JSON实现Mappable(ObjectMapper Framework)协议的类,我试图从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"]

}
}

这个实现的问题是编译器抱怨在超级初始化器之前使用self的映射(map):
AbstractModel.swift:19:9:在super.init初始化self之前,在方法调用’mapping’中使用’self’

不幸的是,我无法在映射(map)之前调用超级初始化器(super.init(实体:NSEntityDescription,insertIntoManagedobjectContext:NSManagedobjectContext?)),因为我需要self来获取NSManagedobjectContext.

我该怎么解决这个问题?

解决方法

我不确定这个解决方案是否是解决问题的正确方法,但我以这种方式实现了我的课程并且它有效:
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"]

}
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...