Интерфейс запроса для магазина iPhone CoreData - PullRequest
0 голосов
/ 16 мая 2010

еще один вопрос новичка iPhone ...

У меня есть следующее:

NSPersistentStoreCoordinator NSManagedObjectContext NSManagedObjectModel

Можно ли выполнять запросы непосредственно в хранилище (так как это БД sqlite)? Я пытаюсь удалить все записи из таблицы, и решил, что «УДАЛИТЬ ИЗ таблицы» было бы неплохо и быстро, в отличие от циклического просмотра записей и их удаления вручную (с чем я также борюсь).

Спасибо за ваше время,

Джеймс

1 Ответ

1 голос
/ 16 мая 2010

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

Чтобы удалить все записи через основные данные, у меня есть следующее:

+ (void) deleteAll {
  NSManagedObjectContext *managedObjectContext = [(myAppDelegate*)[[UIApplication sharedApplication] delegate] managedObjectContext];
  NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
  NSEntityDescription *entity = [NSEntityDescription entityForName:[[self class] description] inManagedObjectContext:managedObjectContext];
  [fetchRequest setEntity:entity];

  NSError *error;
  NSArray *items = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
  [fetchRequest release];


  for (NSManagedObject *managedObject in items) {
    [managedObjectContext deleteObject:managedObject];
    NSLog(@"%@ object deleted",[[self class] description]);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...