2

NSManagedObjectContext (즉, inserted == YES)에 삽입되었지만 지금까지 문맥의 저장소에 saved이 없었던 (런타임에) NSManagedObjects을 식별 할 수 있습니까?삽입되었지만 아직 저장되지 않은 NSManagedObjects?

나는 처음으로 그들의 objectID이 여전히 nil일지도 모른다고 생각했지만 이것은 사실이 아니었다.

UPDATE 나는 temporaryID 확인 (accepted answer 참조) 경우 중첩 된 MOCS 작동 확인하기 위해 신속하게 실험을 수행 하였다. 이것은 아니오를 제안합니다 : 하위 MOC를 저장하면 레벨이 한 단계 (즉 상위 MOC가 아니라 영구 저장소가 아닌 상위)까지 푸시되므로 새로 삽입 된 MO의 객체 ID가 일시적으로 유지됩니다. MO가 하위 MOC에서 새 것인지,이 경우 상위 MOC에 저장되지 않았는지 확인하는 한 가지 방법은 명백히 [child objectRegisteredForID: object.objectID] && ![parent objectRegisteredForID: object.objectID]을 확인하는 것입니다.

답변

2

당신은 NSManagedObjectIDtemporaryIDproperty 사용할 수 있습니다

YES 수신기가 일시적인 경우는 true, 그렇지 않은 경우는 NO. 대부분의 개체 ID는 입니다. 관리되는 개체 컨텍스트에 삽입 된 새 개체에는 임시 ID가 할당되며이 개체는 영구 저장소에 저장되면 영구적 인 ID로 바뀝니다.

사용 예제 :

if(object.objectID.isTemporaryID) { 
    //the object has not been saved yet 
} 
+0

계획 관리 객체 컨텍스트 (MOC)과 중첩하도록 확장 할 수 있다면 당신은 알고있다. 예를 들어, 저장을 한 레벨 (즉, 상위 MOC가 아닌 영구 저장소)로 푸시하기 때문에 하위 MOC를 처음으로 저장하면 MO에 임시 ID가 여전히 남아 있다고 가정합니다. 부모 MOC에 저장되지 않은 어린이 MOC의 MOC를 찾는 방법은 아직 있습니까? 아마도'insertedObjects'를 통해? 원하는 경우 별도의 질문을 게시 할 수 있습니다. – Drux

+0

잘 모르겠습니다. 다른 질문을하는 것이 좋습니다. –

+0

실험을하고 아마도 그렇게 할 것입니다. 나는 다른 곳에서 "자식 MOC에게는 부모 MOC가 영구 저장소"라고 읽었습니다. 어쩌면 중첩 된 MOC에도 동일한 전략을 사용하는 것만 큼 간단 할 것입니다. – Drux

관련 문제