2012-03-03 9 views
2

NSManagedObject의 인스턴스를 핵심 데이터 저장소에 즉시 저장하면 안됩니다.NSManagedObject의 일시적인 인스턴스

경우에 따라 나중에 인스턴스를 저장하려고합니다.

가능합니까 (내 NSManagedObject 서브 클래스의 간단한 alloc/init은 허용되지 않습니다)?

감사합니다.

답변

2

나중에 개체를 저장해야하는 이유를 묻습니다. 아니, 할 수없는 당신이 말한대로, 당신은 항상 문서에서 NSManagedObject

의 지정된 초기화를 사용해야하기 때문에 :

내가 말할 단지 것입니다 귀하의 질문에 주어진 정보와

NSManagedObject는 entity.initWithEntity : insertIntoManagedObjectContext : 따라서 에 적합한 클래스의 서브 클래스를 자동으로 생성하여 에 의해 Objective-C 2 속성 기능 ("선언 된 속성"참조)을 지원하는 동적 클래스 생성을 사용합니다. 엔티티에 적절한 클래스의 인스턴스를 반환합니다. 동적으로 생성 된 하위 클래스는 으로 지정된 클래스를 기반으로하므로 모델에 사용자 지정 클래스를 지정하면 클래스가 alloc에 ​​전달됩니다.

+0

감사합니다. 새 개체를 만들려면 ModalDialog를 보여주고 싶습니다. 그러므로이 객체의 인스턴스를 사용하고 싶습니다.이 객체에는 몇 가지 편의가 있습니다. 필요한 메소드가 있습니다. 사용자가 "취소"대화 상자를 떠날 경우 저장하지 않고 인스턴스를 삭제하려고합니다. 사용자가 "store"라고 말한 경우에만 인스턴스가 지속되어야합니다. – mica

+0

ModalDialog를 표시 할 때 개체를 만들어야한다고 가정합니다. 그렇지 않은 경우 사용자가 "Store"를 가볍게 두 드리면 객체를 생성하고 그렇지 않으면 아무것도 수행하지 않습니다. ModalDialog에 객체가 필요하다면 사용자가 "Cancel"을 두드리면 deleteObject를 호출하는 것이 가장 좋습니다. 그것이 내가하는 방법이다. –

+0

사실, 그것을 할 수있는 방법은 컨텍스트없이 객체를 초기화하는 것입니다. 즉, initWithEntity : insertIntoManagedObjectContext :를 호출하고 컨텍스트로 nil을 전달합니다. 그런 다음 사용자가 "Store"를 탭하면 [context insertObject : object]; 필요한 경우 컨텍스트를 저장하십시오. 사용자가 "취소"를 두드리면 개체가 컨텍스트와 연결되지 않고 저장되지 않기 때문에이 방법이 유용 할 수 있습니다. –

관련 문제