Wie bekomme ich das Core Data-Objekt von einer bestimmten Objekt-ID?
Kann ich die ID eines Objekts in der Core-Daten mit dem folgenden code:
NSManagedObjectID *moID = [managedObject objectID];
Allerdings gibt es einen Weg, um ein Objekt aus der core-Daten speichern, indem Sie einer bestimmten Objekt-ID? Ich weiß, daß ich kann dies tun, indem Sie mit einem NSFetchRequest aus, wie dieser:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(objectID = %@)", myObjectID];
[fetchRequest setPredicate:predicate];
Aber ich möchte es tun in einer Weise, die nicht initiieren eigene fetch-Anfrage. Irgendwelche Ideen?
InformationsquelleAutor der Frage Jason | 2011-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du willst:
Holt das Objekt aus dem store, die ID, oder null falls es nicht existiert.
(Achtung: es gibt zwei Methoden, die auf NSManagedObjectContext mit ähnlich anmutenden Namen, die ausgelöst me up. Zu helfen, halten Sie Sie gerade, hier ist, was die beiden anderen machen:
...erstellen eine Fehler-Objekts mit dem objectID zur Verfügung gestellt, ob oder nicht so ein Objekt tatsächlich vorhanden ist, in den laden. Wenn es nicht existiert, alles, was feuert der Fehler wird scheitern, es sei denn, Sie legen Sie das Objekt zuerst mit NSManagedObjectContext ist
insertObject:
. Die einzige Verwendung, die ich gefunden habe für das kopieren der Objekte von Geschäft zu Geschäft, während die Erhaltung ObjectIDs....wird das Objekt zurückgeben, das über die ID, wenn es wurde der Wert aus dem Speicher, indem diese managedObjectContext. Wenn jemand weiß, was diese Methode ist nützlich,, bitte Kommentar.)
[eta.: Ein weiterer wichtiger Unterschied zwischen der ersten Methode und der beiden anderen ist, dass
existingObjectWithID:error:
nie wieder eine Störung; es ist immer holt Sie das gesamte Objekt für Sie. Wenn Sie versuchen, zu vermeiden (z.B. arbeiten mit einem teuren zu Holen-Objekt mit einem großen blob-Eigenschaft), müssen Sie clever sein mitobjectWithID:
oderobjectRegisteredForID:
welche nicht Feuer-Fehler, oder verwenden Sie ein ordnungsgemäß konfiguriert fetch-Anfrage.]InformationsquelleAutor der Antwort rgeorge
objectWithID:
ist die Methode, die Sie suchen, und es ist der empfohlene Weg, dies zu tun.objectWithID:
wird eine effiziente Nutzung der NSManagedObjectContext ziehen Sie das Objekt nur so viele Ebenen wie erforderlich - im Gegensatz zu einigen der anderen bedeutet, dies zu tun.objectWithID:
wird richtig mit in-memory-Daten in übergeordneten zusammenhängen, der persistent store coordinator und die persistente Speicherung selbst vor dem Schlafengehen an den sicherungsspeicher.Dieser bedeckt ist, in die Tiefe, in die WWDC 2012 Sitzung "Core-Data-Best-Practices".
InformationsquelleAutor der Antwort quellish