Как получить базовые данные для создания БД SQLite из моей модели управляемых объектов - PullRequest
2 голосов
/ 08 апреля 2010

Я был связан с Базовыми данными. Я посмотрел примеры и документацию, но все они, кажется, копируют существующую базу данных SQLite в рабочий каталог. Я определил свою модель данных и просто хочу, чтобы Core Data создала базу данных SQLite. Затем я буду заполнять БД мое приложение.

Может кто-нибудь показать мне, как?

Ответы [ 4 ]

5 голосов
/ 08 апреля 2010

Я посмотрел примеры и документацию, но все они, похоже, копируют существующую базу данных SQLite в рабочий каталог.

Какую книгу вы прочитали?Я думаю, вы как-то нашли только странные наборы примеров ... во всяком случае.

Это очень просто.

  1. Создайте NSPersistentStoreCoordinator и свяжите его с именем файла с помощью addPersistentStoreWithType:configuration:URL:options:error:.(Файл не должен существовать на данном этапе. Возможно, эта часть вас смутила. Вам нужно указать имя файла, в который будут сохранены данные.)
  2. Получите NSManagedObjectContext, связанный с ним.

На этом этапе настройка базовых данных готова.Далее

Создайте NSEntityDescription для вашей сущности. Создайте объект с помощью [[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:moc]

На этом этапе один объект вставляется в контекст, но не сохраняетсяна диск.Когда вы закончите, вы делаете

[moc save:&error];

Это создаст файл SQL на диске.Вы должны изучить примеры, предоставленные самой Apple, уже связанные с другими авторами здесь.Прочитайте также учебные пособия, предоставленные самой Apple, , как это .Они довольно хороши.

Кроме того, купите Базовую книгу данных Маркуса Зарры , что очень хорошо и мне очень помогло.

1 голос
/ 10 августа 2010

SQLite создается автоматически, но только если база данных еще не существует

Удалите приложение с iPhone / Simulator, чтобы очистить его

1 голос
/ 08 апреля 2010

Вы делаете что-то вроде этого, чтобы настроить постоянный координатор магазина и создать базу данных (код взят из примера приложения Apple "Recipes")

NSString *storePath = [[self applicationDocumentsDirectory] 
                        stringByAppendingPathComponent:@"MyDB.sqlite"];

NSURL *storeUrl = [NSURL fileURLWithPath:storePath];

NSError *error;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]    
                             initWithManagedObjectModel: [self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
0 голосов
/ 08 апреля 2010

Самый простой способ - использовать шаблоны Xcode, включающие базовые данные, для создания уже настроенного проекта.Посмотрите на метод persistentStoreCoordinator, чтобы узнать, как они определяют местоположение и тип постоянного хранилища. Руководство по программированию базовых данных также содержит инструкции.По умолчанию используется XML, но вы можете легко изменить его на NSSQLiteStoreType.Ваша программа создаст новую базу данных при первом запуске.

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