Как добавить существующую базу данных в мое приложение в iphone SDK - PullRequest
1 голос
/ 30 ноября 2010

Я должен добавить существующую БД в свое приложение для iphone Я пытался поместить его в папку проекта и использовал эту функцию инициализации

-(id) initDatabase{
    databaseName = @"mydatabase.sqlite";
    // Get the path to the documents directory and append the databaseName
 NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDir = [documentPaths objectAtIndex:0];
 databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
 [databasePath retain];

    return self;
}

и затем я использовал эту функцию

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK){ //inserting methods

но у меня есть ошибка: таблица 'nametable' не существует, я уверен, что эта таблица существует, и я думаю, что эти методы создают новый файл БД в путь устройства.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2010

В папке для документов нет файлов для запуска.Все, что идет с приложением, должно быть включено в комплект приложения.При первом запуске приложения папка документов всегда пуста.

Вам необходимо найти файл в комплекте приложения, используя NSBundle's pathForResource:ofType:.

Если БД доступна только для чтения, вы можете просто оставить ее там.Если это readwrite, вам нужно скопировать файл в папку документов или библиотеки при первом запуске приложения.


Обновление:

Не могли бы вы привести пример использования 'NSBundle's pathForResource: ofType:' пожалуйста? Извините, но яновинка для iphone sdk

Это просто:

NSString *path=[[NSBundle mainBundle] pathForResource:@"myDatabase" ofType:@"sqlite"];
0 голосов
/ 30 ноября 2010

На боковой панели установите флажок "Цели" => (Ваша цель) => "Копировать ресурсы пакета" .Я думаю, что ваш файл базы данных, возможно, не был скопирован, потому что XCode не знает, что это за тип файла.

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