删除所有对象,我使用下面的方法,以便从CoreData删除所有对象后:NSArrayController的保持为空从CoreData
- (void)removeAllObjects:(id)sender{
[[self managedObjectContext] lock];
[[self managedObjectContext] reset];
NSPersistentStore *store = [[[self persistentStoreCoordinator] persistentStores] lastObject];
if (store)
{
NSURL *storeUrl = store.URL;
NSError *error;
if ([[self persistentStoreCoordinator] removePersistentStore:store error:&error])
{
__persistentStoreCoordinator = nil;
__managedObjectContext = nil;
__managedObjectModel = nil;
NSLog(@"storeUrl %@", storeUrl);
if (![[NSFileManager defaultManager] removeItemAtPath:storeUrl.path error:&error])
{
NSLog(@"\nresetDatastore. Error removing file of persistent store: %@",[error localizedDescription]);
}
else
{
NSLog(@"Recreating");
//now recreate persistent store
// [self persistentStoreCoordinator];
[[self managedObjectContext] unlock];
}
}
else
{
NSLog(@"\nresetDatastore. Error removing persistent store: %@", [error localizedDescription]);
}
}
else
{
NSLog(@"\nresetDatastore. Could not find the persistent store");
}
}
一切似乎工作的伟大。删除所有内容后,我可以再次添加新对象。但新对象不会出现在绑定到managedObjectContext的NSArraycontroller中。重新启动应用程序后,所有新的对象都在ArrayController中(并出现在我的tableView中)
我检查绑定是否以某种方式丢失,但一切正确。
我在做什么错?我必须错过启动时发生的事情。但是什么? O_O
(我启用了ARC)
哎呀,不要称之为'NSArrayController'。 'NSArray'是一个数据类型。 'Controller'保留给'ViewController'对象。 – 2012-02-13 22:15:37
Em,但我正在谈论NSArrayController。 https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSArrayController_Class/Reference/Reference.html – Daniel 2012-02-13 22:48:31
+1哇......头脑风暴。 – 2012-02-14 00:16:10