У меня есть класс, который напрямую отображает JSON, реализующий протокол Mappable
(ObjectMapper Framework), и я пытаюсь наследовать от NSManagedObject
.Как реализовать класс NSManagedObject, соответствующий Mappable
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)
, который использует себя перед супер инициализатором: 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
.
Как я могу решить эту проблему?
Я не знаком с ObjectMapper, но NSManagedObject может * только * создается с помощью назначенного инициализатора. Однако вы можете передать 'context = nil' и вставить объект в контекст позже. –
Спасибо, я постараюсь реализовать его таким образом. Я буду держать вас в курсе. – VincentS