코어 데이터를 처음 사용하는 경우 NSManagedObject
을 올바르게 초기화하고 편의점과 지정된 이니셜 라이저간에 값을 유지하는 두 가지 문제가 있습니다. 내 AnalyticsEvent NSManagedObject
서브 클래스의핵심 데이터 관리 대상 개체 초기화
내 코드 :
@NSManaged public var eventName: String?
@NSManaged public var type: String?
@NSManaged public var reference: String?
@NSManaged public var timestamp: Double
public required init() {
// Initialize CoreData stack...
let manager = CoreDataManager(modelName: "Analytics", storeName: "Analytics")
// I'm not sure what I should be using to instantiate a new entity here...
// I believe the entity(forEntityName:in:) class method should return an existing value stored in managedObjectContext...
let event = NSEntityDescription.entity(forEntityName: "Event", in: manager.managedObjectContext!)
// ... and insertNewObject(forEntityName:into:) to create a placeholder
// for my new object until I issue saveContext() on managedObjectContext.
// This isn't working right now, so comment out following line
//let event = NSEntityDescription.insertNewObject(forEntityName: "Event", into: database.managedObjectContext!) as! AnalyticsEvent
super.init(entity: event!, insertInto: database.managedObjectContext)
let customProperties = CustomProperties()
self.customPropertiesData = NSKeyedArchiver.archivedData(withRootObject: properties) as Data
self.timestamp = Date().timeIntervalSince1970
}
public convenience init(eventName: String) {
self.init()
// At this point the data set in my designated initializer (above),
// the values have been lost. For example, timestamp == 0
self.eventName = eventName
self.type = EventType.discreteEvent
}
감사합니다!
편집 :
추가 조사가 어쩌면 내 편의 초기화가 super.init(entity:insertInto:)
호출에 의해 호출되고 있으며,이 경우, 나는 그것을가 편리 이니셜의 선택을 찾는 방법을 알고 ...하지만하지 않습니다 공개 할 수 그 값 (타임 스탬프와 같은)이 보존되지 않는 이유를 설명 할 것입니다. 왜냐하면 그것이 객체의 새로운 인스턴스이기 때문입니다! 흠 ...
편집 2 :
self.eventName = eventName
CoreData : 오류 : 관리되는 개체 0x7fa2da54da90 돌연변이 (0x7fa2da54da40을
나는 실행이 라인을 칠 때 나는이 런타임 오류가 언급하는 것을 잊었다)을 삭제합니다. 내가 여기서 무슨 일이 일어나고 있는지 생각
감사하지만이 역시 시도했습니다. 불운! 동일한 런타임 오류도 제공합니다. –
@AlexSmith 나는 이니셜 라이저를 파고 있는데 무엇이'@ NSManaged'가 실제로 의미하는지 ...이 답변을 본 적이 있습니까 : http://stackoverflow.com/a/39239651/1060154 나는 그것을 보증 할 수는 없지만 빠른 시도! – MathewS
다시 한 번 감사드립니다.하지만 불행히도 내가 필요한 것은 아닙니다. 이전과 같음 ... –