Проблема удаления основных данных при полном закрытии приложения - PullRequest
2 голосов
/ 07 сентября 2011

Привет, у меня проблема с хранилищем основных данных! Я удаляю его следующим образом, как нашел здесь переполнение стека:

 NSFetchRequest * allFriends = [[NSFetchRequest alloc] init];
[allFriends setEntity:[NSEntityDescription entityForName:@"Friend" inManagedObjectContext:self.managedObjectContext]];
[allFriends setIncludesPropertyValues:NO]; //only fetch the managedObjectID

NSError * error = nil;
NSArray * friends = [self.managedObjectContext executeFetchRequest:allFriends error:&error];
[allFriends release];
//error handling goes here
for (NSManagedObject * Friend in friends) {
    [self.managedObjectContext deleteObject:Friend];
}

это швы для идеальной работы во время выполнения! мое табличное представление (которым я управляю с NSFetchedResultsController) очищает и все отлично, это выглядит! Также, когда я нажимаю кнопку «Домой» и запускаю ее обратно, она работает.

НО, если я даже закрою его из списка многозадачности (поэтому полностью закрою его) и снова включу, все снова вернется в tableView!

Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

4 голосов
/ 07 сентября 2011

Ваш код в порядке, но вы забыли зафиксировать все изменения (объекты были удалены), внесенные в базу данных. Итак, вы должны добавить следующие строки в ваш код, и после повторного открытия приложения ваша БД не будет содержать эти объекты:

    NSError *error;
    if (![self.managedObjectContext save:&error]) 
    {
        // Update to handle the 
        NSLog(@"Unresolved error %@", error);
        exit(-1);  // Fail
    }

Поскольку все изменения хранятся в памяти, не забудьте сохранить контекст управляемого объекта после внесения некоторых важных или критических изменений. Перед тем как вы внесете изменения, файл базы данных / постоянного хранилища будет в ранее сохраненном состоянии.

1 голос
/ 07 сентября 2011

Вы сохраняете managedObjectContext в любой момент перед выходом? Обычно вы сохраняете контекст, когда приложение переходит в фоновый режим или завершает работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...