Какой-либо путь к пред заполняет базовые данные?

Я создавал приложение списка и поддерживал его базовыми данными.

Я хотел бы иметь список по умолчанию, говорят, что объекты 10 аэропортов, так, чтобы пользователь не запускал с нуля.

Там какой-либо путь состоит в том, чтобы сделать это?

Любая справка ценится.Заранее спасибо.

62
задан Irfan 18 March 2014 в 10:30
поделиться

3 ответа

Вот лучший способ (и он не требует знания SQL):
Создайте быстрое приложение Core Data для iPhone (или даже для Mac), используя ту же объектную модель, что и ваше приложение List. Напишите несколько строк кода для сохранения управляемых объектов по умолчанию, которые вы хотите сохранить в хранилище. Затем запустите это приложение в симуляторе. Теперь перейдите в ~/Library/Application Support/iPhone Simulator/User/Applications. Найдите свое приложение среди GUID, затем просто скопируйте sqlite store в папку проекта вашего приложения List.

Затем загрузите это хранилище, как это сделано в примере CoreDataBooks.

58
ответ дан 24 November 2019 в 16:45
поделиться

Да, на самом деле это сделано в примере CoreDataBooks, вы можете скачать код здесь: образец кода

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

После успешного сохранения контекста вы можете остановить приложение, затем перейти в поисковик и перейти в папку: ~ / Library / Developer введите в поиске .sqlite и посмотрите в / Developer, сортировка по дате даст вам самые свежие.sqlite, которая должна соответствовать времени выполнения кода, вы можете взять это хранилище и добавить его в качестве ресурса своего проекта. Затем этот файл может быть прочитан координатором постоянного хранилища.

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

if (persistentStoreCoordinator) {
    return persistentStoreCoordinator;
}


NSString *storePath = [[self applicationDocumentsDirectory]      stringByAppendingPathComponent: @"CoreDataBooks.sqlite"];
 /*
  Set up the store.
 For the sake of illustration, provide a pre-populated default store.
 */
NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn't exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath]) {
  NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"CoreDataBooks"      ofType:@"sqlite"];
 if (defaultStorePath) {
 [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
 }
}

NSURL *storeUrl = [NSURL fileURLWithPath:storePath];

 NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber   numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 
  persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];

 NSError *error;
 if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
  // Update to handle the error appropriately.
  NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
 exit(-1);  // Fail
}    

return persistentStoreCoordinator;
}

Надеюсь, что это поможет.

-Oscar

30
ответ дан 24 November 2019 в 16:45
поделиться

Для 10 элементов вы можете просто сделать это в applicationDidFinishLaunching: в делегате вашего приложения.

Определите метод, например insertPredefinedObjects , который создает и заполняет экземпляры объекта, отвечающего за управление элементами вашего аэропорта, и сохраняет ваш контекст. Вы можете прочитать атрибуты из файла или просто встроить их в свой код. Затем вызовите этот метод внутри applicationDidFinishLaunching: .

8
ответ дан 24 November 2019 в 16:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: