특정 객체 ID에서 Core Data 객체를 얻는 방법은 무엇입니까?
다음 코드를 사용하여 Core Data에서 객체의 ID를 쉽게 얻을 수 있습니다.
NSManagedObjectID *moID = [managedObject objectID];
그러나 특정 객체 ID를 부여하여 코어 데이터 저장소에서 객체를 가져 오는 방법이 있습니까? NSFetchRequest를 사용하여 다음과 같이 할 수 있음을 알고 있습니다.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(objectID = %@)", myObjectID];
[fetchRequest setPredicate:predicate];
그러나 자체 가져 오기 요청을 시작하지 않는 방식으로 수행하고 싶습니다. 어떤 아이디어?
당신이 원하는 :
-(NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID
error:(NSError **)error
해당 ID를 가진 상점에서 오브젝트를 가져 오거나 존재하지 않는 경우 nil을 가져옵니다.
(주의 : NSManagedObjectContext에는 비슷한 이름을 가진 두 가지 방법이 있습니다.이 이름을 그대로 유지하려면 다른 두 가지 방법이 있습니다.
-(NSManagedObject *)objectWithID:(NSManagedObjectID *)objectID
... 그러한 오브젝트가 실제로 상점에 존재 하는지 여부에 관계없이 제공된 objectID로 결함 오브젝트를 작성합니다 . 존재하지 않는 경우, NSManagedObjectContext 's로 객체를 먼저 삽입하지 않으면 결함을 발생시키는 모든 것이 실패합니다 insertObject:
. 내가 찾은 유일한 용도는 ObjectID를 유지하면서 상점간에 객체를 복사하는 것입니다.
-(NSManagedObject *)objectRegisteredForID:(NSManagedObjectID *)objectID
... 이 managedObjectContext에 의해 상점에서 페치 된 경우 해당 ID를 가진 오브젝트를 리턴합니다 . 이 방법이 유용한 지 아는 사람은 의견을 말하십시오.)
[eta .: 첫 번째 방법과 다른 두 가지 방법의 또 다른 중요한 차이점은 existingObjectWithID:error:
절대 오류를 반환하지 않는다는 것입니다. 항상 전체 객체를 가져옵니다. 당신이 피하려고하는 경우 (함께 예를 들어 작업을 비용이 드는 가져 큰 덩어리 속성을 가진 개체), 당신이 영리해야 objectWithID:
또는 objectRegisteredForID:
화재 결함하지 않는; 또는 올바르게 구성된 페치 요청을 사용하십시오.]
objectWithID:
찾고자하는 방법이며 권장되는 방법입니다. objectWithID:
NSManagedObjectContext를 효율적으로 사용하여 다른 방법과 달리 필요한만큼만 개체를 가져옵니다. objectWithID:
백업 저장소로 이동하기 전에 상위 컨텍스트, 영구 저장소 코디네이터 및 영구 저장소 자체에서 인 메모리 정보를 올바르게 사용합니다.
이는 WWDC 2012 세션 "핵심 데이터 모범 사례" 에서 자세히 다룹니다 .
스위프트 5 버전 :
https://developer.apple.com/documentation/coredata/nsmanagedobjectcontext/1506686-existingobject
object(with:)
또는 방법도 있습니다 registeredObject(for:)
. 필요한 것에 따라.
참고 URL : https://stackoverflow.com/questions/5035057/how-to-get-core-data-object-from-specific-object-id
'Programming' 카테고리의 다른 글
HTML5 YouTube 동영상 강제 (0) | 2020.07.18 |
---|---|
Haskell에서 그래프를 어떻게 표현합니까? (0) | 2020.07.18 |
qmake : ''Qt 설치를 찾을 수 없습니다 (0) | 2020.07.18 |
C 동적으로 성장하는 배열 (0) | 2020.07.18 |
오류 : Android Studio에서 이름이 'default'인 구성을 찾을 수 없습니다 (0) | 2020.07.18 |