executeFetchRequest在第三次调用时崩溃

时间:2010-10-14 12:34:25

标签: iphone objective-c cocoa

我的Objective-C代码中有一个奇怪的问题。我有一个View Controller,我在“viewWillAppear”中调用自己的loadData方法。这很酷,直到第三次看到视图。

当我打电话

时,应用程序崩溃时没有任何异常或其他提示
NSArray *storeListArray = [managedObjectContext executeFetchRequest:fetchRequest error:&error];

我检查了managedObjectContext在其他地方没有被意外释放。但情况似乎并非如此。 fetchRequest是在上面的调用之前创建的。我猜它在executeFetchRequest方法中的某处崩溃。

有人知道我在哪里可以找到错误吗?真正令我烦恼的是,它可重复发生在第三次通话中。

1 个答案:

答案 0 :(得分:1)

好吧......我解决了问题(我猜)。据我所知,问题是电话的“错误”。

我在调用之前没有初始化NSError对象,这是一个愚蠢的错误。所以现在这对我有用:

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

之前只有

NSError *error;

顺便说一句,这就是我在很多例子中找到的。但似乎这至少是问题的一部分。

我的整个代码现在看起来像这样:

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];

也许这有助于某人。