Невозможно открыть базу данных SQLITE iPhone - PullRequest
0 голосов
/ 01 февраля 2010

Я использую базу данных SQLITE в своем приложении для iPhone. У меня есть кнопка обновления на домашнем экране, и при нажатии этой кнопки обновления я обычно получаю данные из своего веб-сервиса и сохраняю их в своей базе данных. В обычном сценарии это работает нормально, но когда я нажимаю кнопку обновления 4-5 раз, мое приложение аварийно завершает работу, и в журнале моего приложения отображается сообщение «Не удается открыть базу данных». Есть ли какие-либо ограничения на вставку количества строк в базу данных SQLITE?

1 Ответ

2 голосов
/ 01 февраля 2010

Похоже, ваше приложение загружало данные из веб-службы, записывало их в базу данных и затем повторяло эти шаги, когда вы часто нажимали кнопку.

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

Не видя некоторого кода, невозможно сказать, что происходит.

В идеале вы должны настраивать очереди для записи в вашу базу данных, а в Cocoa / Cocoa Touch это может быть легко достигнуто с помощью NSOperation и NSOperationQueue. Используя эти классы, вы можете инкапсулировать поведение загрузки данных, разбора их на объекты модели и записи их в базу данных для различных «операций», которые затем могут быть помещены в очередь. Вы также можете установить зависимости, чтобы одна операция не выполнялась, если другая еще не завершена. Все это настраивается.

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

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