Я создавал приложение списка и поддерживал его базовыми данными.
Я хотел бы иметь список по умолчанию, говорят, что объекты 10 аэропортов, так, чтобы пользователь не запускал с нуля.
Там какой-либо путь состоит в том, чтобы сделать это?
Любая справка ценится.Заранее спасибо.
Вот лучший способ (и он не требует знания SQL):
Создайте быстрое приложение Core Data для iPhone (или даже для Mac), используя ту же объектную модель, что и ваше приложение List. Напишите несколько строк кода для сохранения управляемых объектов по умолчанию, которые вы хотите сохранить в хранилище. Затем запустите это приложение в симуляторе. Теперь перейдите в ~/Library/Application Support/iPhone Simulator/User/Applications. Найдите свое приложение среди GUID, затем просто скопируйте sqlite store в папку проекта вашего приложения List.
Затем загрузите это хранилище, как это сделано в примере CoreDataBooks.
Да, на самом деле это сделано в примере 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
Для 10 элементов вы можете просто сделать это в applicationDidFinishLaunching:
в делегате вашего приложения.
Определите метод, например insertPredefinedObjects
, который создает и заполняет экземпляры объекта, отвечающего за управление элементами вашего аэропорта, и сохраняет ваш контекст. Вы можете прочитать атрибуты из файла или просто встроить их в свой код. Затем вызовите этот метод внутри applicationDidFinishLaunching:
.