핵심 데이터를 사용하고 있습니다. 내 응용 프로그램의 몇 가지 이벤트에서 관리되는 개체를 업데이트하려고합니다. 해당 관리 객체는 앱 실행시 생성되거나 가져옵니다 (있는 경우). 관리되는 객체가 스레드로부터 안전하지 않으므로 관리되는 객체를 메모리에 저장하지 않고 대신 스레드 안전을 위해 objectID
을 저장하고 있습니다. 개체가 생성되어 컨텍스트에 저장되면 objectID
을 저장하므로 저장된 objectID는 영구적이며 일시적이 아닙니다. 내가 다음 코드 한 내 개체를 업데이트 할 이벤트에objectWithID를 사용하여 managedObject를 nil로 가져 오는 중
:
self.managedObjectContext.performBlock {
let myObject = self.managedObjectContext.objectWithID(objectId) as! MyClass
myObject.property = myValue
self.managedObjectContext.save()
}
이 대부분의 시간을 잘 작동하지만 내가 self.managedObjectContext.objectWithID(objectId)
를 사용하여 객체를 얻고 경우가 있지만, 모든 것이 특성이다 객체가 이미 생성되어 컨텍스트에 저장 되었기 때문에 발생하지 않아야합니다.
일부 속성 값이없는 개체를 가져 오는 이유를 지적 할 수 있습니까?
내가 알고있는 유일한 이유는 임시 objectID를 사용하여 objectWithID
메서드를 호출하는 것이지만 영구 objectID 만 사용하고 있기 때문에 필자의 경우에는 그렇지 않습니다.