Как импортировать БД в мою программу для iphone? - PullRequest
0 голосов
/ 06 января 2010

У меня есть база данных db.sqlite3, я скопировал ее в папку документов и использую код для доступа к ней внутри программы.

[[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)
   objectAtIndex:0] stringByAppendingPathComponent:kDbName] UTF8String].

И я могу использовать его, пока мое приложение работает в симуляторе.

Но когда я тестирую устройство, оно не работает. Я знаю, что мы должны импортировать это в Ресурсы и затем использовать это. Я добавил его в ресурсы, но как я могу получить к нему доступ внутри программы?

Ответы [ 3 ]

1 голос
/ 06 января 2010

Вашему приложению необходимо создать версию базы данных для чтения и записи в папке «Документы», скопировав ее из ресурсов. Посмотрите любой sqlite-iphone turorial, чтобы узнать, как это сделать, например. этот

Глядя на ваши недавние вопросы, мне кажется, что вам было бы полезно поработать над учебником, чтобы получить правильный путь.

1 голос
/ 06 января 2010

попробуйте это:

NSString *dbPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"db.sqlite3"]; 
    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
// do something
}
1 голос
/ 06 января 2010

При первом запуске (или если файл базы данных не находится в папке с документами) скопируйте его из ресурсов:

NSFileManager *fileManager = [[NSFileManager defaultManager] autorelease];

if ([fileManager fileExistsAtPath: databasePath]) {
    return;
}

NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
...