최근에 개체를 추가 할 때 영구 ID를 만들 때 특정 정보가 없기 때문에 간단한 추측이 될 수 있습니다.NSManagedObject에 임시 ID가 필요한 이유
좋아요.
그럼 이것을 읽어 obtainPermanentIDsForObjects 오류 :
영구 ID에 변환을 주어진 어레이 내의 오브젝트의 오브젝트 ID. - (BOOL) obtainPermanentIDsForObjects :이 방법은 영구적으로 객체 ID의 각 관리 오브젝트의 오브젝트 ID 변환 (NSError *) 오류
(NSArray를 )는 오류 개체. 객체는 영구 ID를 갖지만 저장 될 때까지 isInserted 에 여전히 긍정적으로 응답합니다.. 이미 영구 ID가있는 오브젝트는 무시됩니다.
코어 데이터가 저장 조작 중 할당에 사용하는 것과 동일한 규칙 (엔티티를 지원하는 첫 번째 쓰기 가능한 저장소이며 인스턴스 및 관련 항목에 적합)과 동일한 규칙에 따라 상점에 아직 지정되지 않은 오브젝트가 지정됩니다. 특별 고려 사항
좋아, NSManagedObject를 저장할 때까지 임시 ID를 얻었습니다. 그러나
managedObjectContext를 저장하면 NSManagedObjects의 ID가 업데이트되지 않습니다.
PO([Catalogs convertEachElementToAnother:(id)^(id element) {
BGCatalogData * data = (BGCatalogData*) element;
NSManagedObjectID * theObjectID= data.objectID;
return theObjectID;
}]);
NSError * error;
BOOL saveSuccesfully = [[BGMDCRManagedObjectContextThreadHandler managedObjectContext] save:&error];
PO([Catalogs convertEachElementToAnother:(id)^(id element){
BGCatalogData * data = (BGCatalogData*) element;
NSManagedObjectID * theObjectID= data.objectID;
return theObjectID;
}]);'
주 모드로 :이 코드와 같이이 동일하게 유지
[Catalogs convertEachElementToAnother:(id)^(id element){ BGCatalogData * data = (BGCatalogData*) element; NSManagedObjectID * theObjectID= data.objectID; return theObjectID; }]: (
"0x888a340 <x-coredata:///BGCatalogData/t084E0F43-A129-4023-8190-2962D8D0930A603>",
"0x888d670 <x-coredata:///BGCatalogData/t084E0F43-A129-4023-8190-2962D8D0930A609>",
"0x888ed50 <x-coredata:///BGCatalogData/t084E0F43-A129-4023-8190-2962D8D0930A615>",
"0x888f690 <x-coredata:///BGCatalogData/t084E0F43-A129-4023-8190-2962D8D0930A621>"
)
2012-11-16 15:33:28.489 BadgerNew[26871:1d03] [Catalogs convertEachElementToAnother:(id)^(id element){ BGCatalogData * data = (BGCatalogData*) element; NSManagedObjectID * theObjectID= data.objectID; return theObjectID; }]: (
"0x888a340 <x-coredata:///BGCatalogData/t084E0F43-A129-4023-8190-2962D8D0930A603>",
"0x888d670 <x-coredata:///BGCatalogData/t084E0F43-A129-4023-8190-2962D8D0930A609>",
"0x888ed50 <x-coredata:///BGCatalogData/t084E0F43-A129-4023-8190-2962D8D0930A615>",
"0x888f690 <x-coredata:///BGCatalogData/t084E0F43-A129-4023-8190-2962D8D0930A621>"
)
우리는 객체에게 영구적 인 ID를 제공 할 수 있습니다 : 나는 위의 결과 코드
로 변환 할 수 없습니다 obtainPermanentIDsForObjects를 호출하여 BEFORE 개체가 저장됩니다.
왜 IOS가 영구적 인 ID를 제공하기 위해 저축하기까지 기다리는 것이 귀찮았습니까? 왜 지금 안 되니?
충분히 좋습니다. 데이터를 저장하면 내 managedObject의 ID가 변경되지 않는 이유는 아직도 이해할 수 없습니다. –
이유를 알았습니다. 부모에게 데이터를 저장 한 후에도 부모에게 데이터를 저장해야합니다. –