Я использую следующий метод, чтобы удалить все объекты из 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");
}
}
Вроде все отлично работает. Удалив все, я снова могу добавлять новые объекты. Но новые объекты не появляются в моем контроллере NSArraycontroller, который привязан к managedObjectContext. После перезапуска приложения все новые объекты находятся в ArrayController (и появляются в моем tableView)
Проверил, не теряются ли как-то привязки, но все правильно.
Что я делаю неправильно? Я должен пропустить кое-что, что происходит при запуске. Но что? о_О
(У меня включен ARC)
NSArrayController
.NSArray
- это тип данных.Controller
зарезервирован дляViewController
объектов. - person Jack Lawrence   schedule 14.02.2012