好吧,我疯狂地试图弄清楚这个,所以我想我发布它,看看是否有人知道发生了什么。
我将实体添加到Core Data并检索它们很好,一切都在我的应用程序中完美显示。但出于某种原因,当我使用NSFetchRequest
获取某种类型的所有实体的列表时,它总是返回少于应有的对象。我知道对象在某处,因为我的应用程序可以在应用程序的其他位置显示数据。另外,我手动检查了sqlite文件,发现它也缺少一个对象。如果我的应用程序正在访问数据,这怎么可能?
这是我用来获取实体的代码。我在我的应用程序的许多地方使用此代码,它总是返回一个较少的对象然后确实存在,但我的应用程序仍然要访问它。
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MWLocationItem"
inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:nil];
有没有人知道发生了什么?如果您有任何其他想要查看的代码,请与我们联系。
答案 0 :(得分:1)
1。我认为,如果你忽略错误,这是可能的
[NSManagedObjectContext save:nil]
尝试使用下面的方法,检查一切是否正常
[NSManagedObjectContext save:&error]
2. 另一个可能的原因是您将includesPendingChanges属性设置为fetchrequest
request.includesPendingChanges = NO;
如果没有正确答案:)你能提供更多的源代码行吗?