Sie wollen:
-(NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID
error:(NSError **)error
Ruft das Objekt aus dem Geschäft mit dieser ID ab oder null, wenn es nicht vorhanden ist.
(Beachten Sie: Es gibt zwei Methoden in NSManagedObjectContext mit ähnlich aussehenden Namen, die mich ausgelöst haben. Um sie gerade zu halten, tun die beiden anderen Folgendes:
-(NSManagedObject *)objectWithID:(NSManagedObjectID *)objectID
... erstellt ein Fehlerobjekt mit der angegebenen Objekt-ID, unabhängig davon, ob ein solches Objekt tatsächlich im Geschäft vorhanden ist oder nicht . Wenn es nicht vorhanden ist, schlägt alles fehl, was den Fehler auslöst, es sei denn, Sie fügen das Objekt zuerst mit NSManagedObjectContext ein insertObject:
. Die einzige Verwendung, die ich dafür gefunden habe, ist das Kopieren von Objekten von Geschäft zu Geschäft unter Beibehaltung von ObjectIDs.
-(NSManagedObject *)objectRegisteredForID:(NSManagedObjectID *)objectID
... gibt das Objekt mit dieser ID zurück, wenn es von diesem verwalteten Objekttext aus dem Speicher abgerufen wurde. Wenn jemand weiß, wofür diese Methode nützlich ist, kommentieren Sie bitte.)
[eta.: Ein weiterer wichtiger Unterschied zwischen der ersten und den beiden anderen Methoden besteht darin, dass existingObjectWithID:error:
niemals ein Fehler zurückgegeben wird. es holt immer das ganze Objekt für Sie. Wenn Sie versuchen, dies zu vermeiden (z. B. mit einem teuer zu beschaffenden Objekt mit einer großen Blob-Eigenschaft zu arbeiten), müssen Sie mit objectWithID:
oder klug sein objectRegisteredForID:
, die keine Fehler auslösen. oder verwenden Sie eine ordnungsgemäß konfigurierte Abrufanforderung.]