2012-01-26 110 views
0

好吧,我疯了试图找出这一个,所以我想我会张贴它,看看是否有人知道发生了什么事。核心数据丢失的对象

我将实体添加到核心数据并检索它们,并在我的应用程序中完美显示。但由于某种原因,当我使用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

你如何验证它有一个较少的对象? fetchedObjects.count? – sosborn

+0

是的。在我的应用程序的某些地方,它会返回正确的数字,然后在其他地方返回少一个。并手动检查sqlite文件显示一个对象丢失。 – edc1591

+0

看起来我添加的第一个对象是“缺少的”对象。什么可能导致它不会出现在sqlite文件中? – edc1591

回答

1

我认为这是如果你忽略了错误对

[NSManagedObjectContext save:nil] 

尝试使用下面的方法,来检查是否一切都好可以是可能

[NSManagedObjectContext save:&error] 

2.另一个可能的原因可能是您将includesPendingChanges属性设置为fetchrequest

request.includesPendingChanges = NO; 

如果没有正确的答案:)你可以提供更多的源代码行吗?

+0

问题是我不得不在另一个地方添加另一个保存电话。它现在似乎在工作。 – edc1591