Frage

Ich brauche eine Person NSManagedObject neu zu laden, bevor ich es auf die nächste Ansicht übergeben.

Das ist, weil die fetchedResultsController Ich verwende nur eine Teilmenge der Attribute der Rückkehr und ich brauche den vollen Satz in der nächsten Ansicht.

So weit ich versuche, so etwas wie:

- (void)tableView:(UITableView *)tableViewPassed didSelectRowAtIndexPath:(NSIndexPath *)indexPath {        
        Person *partialPerson = (Person *)[self.fetchedResultsController objectAtIndexPath:indexPath];

   NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:[partialPerson.managedObjectContext]];

    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    [request setEntity:entity];
...

Jetzt kann ich nicht scheinen, das Prädikat zu bekommen diese Arbeit richtig zu tun, so weit ich habe versucht:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF == %@", partialPerson];

und

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF == %@", partialPerson.objectID];

Doch diese beiden scheinen zu arbeiten. Was mache ich hier falsch? Ist das ein guter Ansatz?

Vielen Dank im Voraus für alle Anregungen, Matt

War es hilfreich?

Lösung

Sie müssen nur die Attribute zugreifen, die nicht bemängelt werden, und sie werden automatisch bemängelt bekommen. Sie brauchen nicht das Objekt überhaupt erneut abzurufen.

Update

Bilder speichern oder jegliche Binärdaten in Core Data hat einige grundlegende Regeln zu beachten:

< 100kb store it in the same entity
< 1 mb store it in a separate entity on the other end of a relationship
> 1 mb store it on disk and reference it in the same entity

Sounds wie Sie speichern zu viele binären Daten in der Primärtabelle. Um dies zu korrigieren, die Regel befolgen oben, und es wird Ihr Problem lösen.

Aber das negiert nicht meine ursprüngliche Antwort, dass Sie holen anweisen können, in attribute1, Attribute3 und Attribute 5 und ziehen, wenn Sie Notwendigkeit , um Zugang Attribute3, greifen Sie es einfach und Core Data werden „das richtige tun“ und es laden, wenn Sie versuchen und darauf zugreifen. Es gibt nie einen Grund zu „reload“ das Objekt in dieser Situation.

Andere Tipps

Warum müssen Sie Refetch partialPerson?

Einfach übergeben es an die nächste Ansicht und fertig !!! Sie können auf der nächsten Ansicht mit partialPerson Variable alles, was Sie wollen tun. Ich sehe keinen Grund, warum Sie es brauchen erneut abzurufen.

myViewController.myPartialPerson = partialPerson;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top