有没有办法删除NSManagedObjectContext
?
我正在使用以下代码插入数据:
NSManagedObjectContext * context = [[NSApp delegate] managedObjectContext];
NSManagedObject * basket = nil;
basket = [NSEntityDescription insertNewObjectForEntityForName:@"ShoppingBasket"
inManagedObjectContext: context];
[basket setValue:[firstSelectedObject valueForKey:@"accessoryID"]
forKey: @"accessoryID"];
如何删除所有记录?我想要的东西就像“删除:”功能,但要删除所有内容。
答案 0 :(得分:39)
要删除给定实体的所有实例(我们将使用您的ShoppingBasket),您只需获取所有篮子然后删除它们即可。这只是几行代码:
NSManagedObjectContext * context = [self managedObjectContext];
NSFetchRequest * fetch = [[[NSFetchRequest alloc] init] autorelease];
[fetch setEntity:[NSEntityDescription entityForName:@"ShoppingBasket" inManagedObjectContext:context]];
NSArray * result = [context executeFetchRequest:fetch error:nil];
for (id basket in result)
[context deleteObject:basket];
非基于文档的应用程序中的替代方法是关闭与数据存储的连接,删除实际文件,然后重新连接(标准Core Data项目附带的模板代码将自动创建文件,如果它是缺席)。然后你有了一个全新的空店。
注意,代码示例忽略任何可能的错误。不要那样做。 : - )
答案 1 :(得分:4)
更快捷的方法就是完全删除商店。这样你就不会浪费任何时间来获取对象,或者像其他答案那样通过它们进行枚举。
NSError *error;
NSURL *applicationDocumentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *storeURL = [applicationDocumentsDirectory URLByAppendingPathComponent:@"MyCDStore.sqlite"];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
删除后不要忘记重新创建它。