Доступ к базе данных sqlite3 - PullRequest
0 голосов
/ 15 апреля 2009

Я создал базу данных и таблицу через sqlite3, используя терминал на MacBook, а затем развернул его с помощью приложения для iPhone. Он отлично работает в симуляторе вставки и извлечения значений из таблицы.

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

1 Ответ

1 голос
/ 15 апреля 2009

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

Я делаю что-то похожее на это (где filename это строка NSString, содержащая имя файла базы данных):

NSArray *docPaths =
  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [docPaths objectAtIndex:0];
NSString *fullName = [docPath stringByAppendingPathComponent:fileName];
NSFileManager *fm = [NSFileManager defaultManager];
if (![fm fileExistsAtPath:fullName])
{
  NSString *path = [[NSBundle mainBundle] bundlePath];
  NSString *defaultName = [path stringByAppendingPathComponent:fileName];
  [fm copyItemAtPath:defaultName toPath:fullName error:NULL];
}

По сути, проверьте, существует ли файл, и скопируйте его из базового bundlePath, если он не существует.

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