bekomme ich folgende Fehlermeldung, wenn ein Datensatz hinzufügen möchten:Serious Anwendungsfehler in Core Data mit fetchedResultsContainer
Schwerwiegende Fehler in der Anwendung. Die Ausnahme wurde während der Kerndatenänderung Verarbeitung abgefangen. Dies ist normalerweise ein Fehler in einem Beobachter von NSManagedObjectContextObjectsDidChangeNotification. Der Index 0 ist ungültig mit userinfo (null)
Und das ist es. Ich habe Haltepunkte in alle delegiertenResultsContainer-Delegiertenmethoden eingefügt, die ich implementiert habe, aber nichts bricht.
Ich verfolgt es auf:
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"titleFirstLetter" cacheName:@"Root"];
"sectionNameKeyPath" ist das Problem. "titleFirstLetter" ist eine vorübergehende Eigenschaft, für die ich einen Getter in meiner NSManagedObject-Unterklasse erstellt habe.
Hier ist der Getter:
-(NSString *)titleFirstLetter
{
[self willAccessValueForKey:@"titleFirstLetter"];
NSString *aString = [[self valueForKey:@"title"] uppercaseString];
NSString *stringToReturn = [aString substringWithRange:[aString rangeOfComposedCharacterSequenceAtIndex:0]];
[self didAccessValueForKey:@"titleFirstLetter"];
return stringToReturn;
}
Wenn ich die sectionNameKeyPath auf Null zu ändern, es funktioniert, aber es ist offensichtlich nicht das, was ich will. Es funktioniert auch, wenn ich einen Titel für mein Modell bereits ausgefüllt habe, so dass titleFirstLetter nicht null zurückgibt, obwohl das nicht ganz das Problem zu sein scheint. Wenn ich die Zeichenfolge willkürlich mache, wenn sie null ist, stürzt sie immer noch ab.
Irgendeine Idee, was ist hier oben?
UPDATE: Wenn ich den Titel in der sectionNameKeyPath anstelle der vorübergehenden Eigenschaft verwenden, stürzt es nicht ab, sondern legt offensichtlich jedes Element in einem eigenen Abschnitt. Also ist es irgendwie mit der vorübergehenden Eigenschaft verwandt ...
UPDATE2: Einige vorbereitende Hacking mit einer dauerhaften Eigenschaft anstelle von transient, und keine anderen Änderungen, scheint gut zu funktionieren, so dass dies ein Bug aussieht. Ich habe einen Fehlerbericht geöffnet: # 8553064
UPDATE3: Nun, kratzen Sie das. Die Verwendung eines persistenten Attributs machte keinen Unterschied. Ich bin jetzt etwas am Ende.
Danke!
Sparte meinen Speck! Vielen Dank! Wo hast du reloadRowsAtIndexPaths hinzugefügt: withRowAnimation :? –
sehr danke. dieses Problem stört mich für lange Zeit. – derjohng