【发布时间】:2011-08-24 21:23:41
【问题描述】:
好的,我在删除存储在 CoreData 中的所有对象后保存时遇到问题。如果我不删除任何内容,我在保存时没有问题,但是只要我要求它删除所有对象(所有内容都会删除而没有错误或问题),然后再次尝试保存,它就会崩溃并给我一个 程序收到信号:SIGABRT。这是我的代码。
- (void)deleteStoredData
{
// Define our table/entity to use
NSEntityDescription *entity = [NSEntityDescription entityForName:MOVIE_LIST inManagedObjectContext:managedObjectContext];
// Setup the fetch request
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
// Fetch the records and handle an error
NSError *error;
NSUInteger count = [managedObjectContext countForFetchRequest:request error:&error];
if (count) {
for (int i = 0; i < count - 1; i++) {
NSManagedObject *eventToDelete = [self.listOfMovies objectAtIndex:i];
[managedObjectContext deleteObject:eventToDelete];
}
}
[request release];
}
我认为可能是我将 self.listOfMovies 与存储的对象进行比较,所以我重新获取,将其复制到临时 NSMutableArray,然后将 self.listOfMovies 替换为 temp。但没有变化,仍然崩溃。我是否有一些方法删除了整个记录并且它不再存在?
我要做的是将所有内容加载到应用程序中,然后删除 CoreData 中的所有对象,以便在应用程序关闭(或终止)时将所有新数据保存在记录中。我这样做是否正确,还是有更简单的方法来做到这一点?哦,是的,我只有一个拥有 5 个 NSString 的实体,所以没什么复杂的。
在此先感谢大家。
【问题讨论】:
-
很难说你想做什么。对您的数据模型、发生错误的行以及您遇到的实际错误进行高级描述会非常有帮助。
-
我的模型中只有一个实体。称为电影。该实体有 5 个属性是 NSString 的。如果我所做的只是保存,一切都会完美保存。它可以毫无问题地获取。仅当我尝试删除对象然后稍后保存时才会出现此问题。它在保存并在主应用程序上提供 SIGABRT 时崩溃。
-
此代码将从持久存储中删除所有
MOVIE_LIST对象及其所有数据。那是你想做的吗? -
是的。 Christophers 的回答有效,但我也发现我的模拟器很糟糕,需要重新安装。