我的Objective-C代码中有一个奇怪的问题。我有一个View Controller,我在“viewWillAppear”中调用自己的loadData方法。这很酷,直到第三次看到视图。
当我打电话
时,应用程序崩溃时没有任何异常或其他提示NSArray *storeListArray = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
我检查了managedObjectContext在其他地方没有被意外释放。但情况似乎并非如此。 fetchRequest是在上面的调用之前创建的。我猜它在executeFetchRequest方法中的某处崩溃。
有人知道我在哪里可以找到错误吗?真正令我烦恼的是,它可重复发生在第三次通话中。
答案 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];
也许这有助于某人。