Как добавить файл .sql в sqlite db в Xcode
Я пишу офлайн приложение iPhone, в котором мне нужно читать и отображать из базы данных, которая состоит из нескольких таблиц. В таблицах содержится более 100 тыс. Записей, поэтому практически невозможно вводить их отдельно. Я загрузил файл .sql
всего db. Теперь, как я могу импортировать db как таковой в sqlite / Xcode, чтобы я мог легко начать доступ к данным в нем? Изменить: я видел, что при использовании базы данных расширение файла, которое используется, является .db
файлом. В любом случае я могу преобразовать файл .sql
файл .db
. И если я могу это сделать, могу ли я просто получить доступ к файлу .db
, поместив его в каталог проекта?
- Пакетная сборка и архивирование приложений iOS через терминал
- Охват кода Xcode и fopen $ UNIX2003
- Создайте файлы сборки (.app и .mobileprovision) для использования в утилите конфигурации iPhone
- Навигация с UIViewController на Appdelegate
- Как определить массив в макросах в Objective-c?
- Xcode 4.2 с iOS 5.0 не обнаруживает iPhone iOS 5.1.1
- Неявное преобразование теряет целую точность: 'long long' до 'NSInteger' (aka 'int')
- Как установить вторичный ключ сортировки NSSortDescriptor?
Если вы создали файл .sqlite и в нем есть таблицы, добавьте файл .sqlite в xcode, просто перетащите из рабочего стола в свой пакет (ресурсы). Затем используйте NSFileManager для доступа к sqlite-файлу. Вам нужно написать методы для созданной базы данных и инициализации базы данных, а также вы можете увидеть файл sqlite в папке папок файлов / симуляторов.
- (void)createEditableCopyOfDatabaseIfNeeded { NSLog(@"Checking for database file"); NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error; NSString *dbPath = [self getDBPath]; NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"ihaikudb.sql"]; BOOL success = [fileManager fileExistsAtPath:dbPath]; NSLog(@"If needed, bundled default DB is at: %@",defaultDBPath); if(!success) { NSLog(@"Database didn't exist... Copying default from resource dir"); success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error]; if (!success) NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]); } else { NSLog(@"Database must have existed at the following path: %@", dbPath); } NSLog(@"Done checking for db file"); }