Обеспечение существования файла sqlite между запусками программы - PullRequest
0 голосов
/ 24 апреля 2010

У меня проблема с некоторым кодом sqlite для программы для iPhone в Xcode. Я открывал свою базу данных так:

int result = sqlite3_open ("stealtown.db", & database);

Вот как у них это было в книге, на которую я смотрел, пока я печатал программу. Но тогда, этот способ открытия базы данных работает только при запуске в симуляторе, а не на устройстве. Итак, я наконец понял, что мне нужно сделать следующее:

NSString * file = [[NSBundle mainBundle] pathForResource: @ "stealtown" ofType: @ "db"]; int result = sqlite3_open ([file UTF8String], & database);

И это работает на устройстве, ЗА ИСКЛЮЧЕНИЕМ одного: каждый раз, когда вы запускаете программу, она запускается так, как будто вы никогда не создавали базу данных, а когда вы вставляете запись в таблицу, это ЕДИНСТВЕННАЯ запись в этой таблице.

Когда я использовал первый код на симуляторе, я мог открыть свою программу 6 раз, каждый раз добавляя 1 запись в таблицу, и в конце у меня было 6 записей в этой таблице. Со вторым кодом я делаю то же самое, но каждый раз в этой таблице есть только 1 запись. Я объясняю это хорошо, я надеюсь, что иногда мне трудно.

Кто-нибудь может знать, почему это будет?

1 Ответ

2 голосов
/ 24 апреля 2010

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

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