4 Stimmen

executeFetchRequest stürzt beim dritten Aufruf ab

Ich habe ein seltsames Problem in meinem Objective-C-Code. Ich habe einen View Controller, wo ich meine eigene loadData Methode in "viewWillAppear" aufrufen. Dies funktioniert cool, bis die Ansicht das dritte Mal sichtbar wird.

Dann stürzt die App ohne jegliche Ausnahmen oder andere Hinweise ab, wenn ich die

NSArray *storeListArray = [managedObjectContext executeFetchRequest:fetchRequest error:&error];

Ich habe überprüft, dass der managedObjectContext nicht versehentlich an anderer Stelle freigegeben wird. Aber das scheint nicht der Fall zu sein. Der fetchRequest wird direkt vor dem obigen Aufruf erstellt. Ich vermute, es stürzt irgendwo innerhalb der executeFetchRequest-Methode ab.

Hat jemand eine Idee, wo ich den Fehler finden kann? Was mich wirklich stört, ist die Tatsache, dass es reproduzierbar beim dritten Aufruf passiert.

1voto

thomas Punkte 1308

In Ordnung... Ich habe das Problem gelöst (denke ich). Soweit ich sehen kann, war das Problem der "Fehler" des Aufrufs.

Ich habe einen dummen Fehler gemacht, indem ich das NSError-Objekt vor dem Aufruf nicht initialisiert habe. Also hier ist, was für mich jetzt funktioniert:

NSError *error = nil;
NSArray *storeListArray = [MOC executeFetchRequest:fetchRequest error:&error];

Vorher war es nur

NSError *error;

Das habe ich übrigens in vielen Beispielen gefunden. Aber es scheint, dass das zumindest ein Teil des Problems war.

Mein gesamter Code sieht jetzt so aus:

MyAppDelegate *app = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

NSManagedObjectContext *MOC = [app managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Store" inManagedObjectContext:MOC];
[fetchRequest setEntity:entity];

NSSortDescriptor *streetDescriptor = [[NSSortDescriptor alloc] initWithKey:@"street" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:streetDescriptor, nil];    
[fetchRequest setSortDescriptors:sortDescriptors];

NSError *error = nil;
NSArray *storeListArray = [MOC executeFetchRequest:fetchRequest error:&error];

Vielleicht hilft das jemandem.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X