Основные данные не удается открыть хранилище: «Ошибка при проверке URL для хранилища» - PullRequest
0 голосов
/ 09 октября 2010

Я довольно долго работал над приложением и неожиданно начал сталкиваться с этой ошибкой, когда приложение пытается открыть хранилище Core Data. Я не вносил никаких изменений в свою модель данных или код доступа к данным более месяца, поэтому я не думаю, что это может быть что-то, что я делаю неправильно, когда взаимодействую с Core Data. (Это означает, что URL-адреса в порядке, шаблон вызова в порядке, и т.д ...)

Интересно, что это строки журнала непосредственно перед ошибкой:

/ SourceCache / GoogleMobileMaps / GoogleMobileMaps-217.2 / googlenav / mac / TileStore.mm: 209 не удается открыть /var/mobile/Library/Caches/MapTiles/MapTiles.sqlitedb: (14) не удается открыть файл базы данных /SourceCache/GoogleMobileMaps/GoogleMobileMaps-217.2/googlenav/mac/TileStore.mm:155 файл не существует /var/mobile/Library/Caches/MapTiles/MapTiles.sqlitedb: (2) /SourceCache/GoogleMobileMaps/GoogleMobileMaps-217.2/googlenav/mac/TileStore.mm:209 невозможно открыть /var/mobile/Library/Caches/MapTiles/MapTiles.sqlitedb: (14) не удается открыть файл базы данных /SourceCache/GoogleMobileMaps/GoogleMobileMaps-217.2/googlenav/mac/TileStore.mm:235 невозможно открыть /var/mobile/Library/Caches/MapTiles/MapTiles.sqlitedb: данные плитки не будут кэшироваться

Так что, похоже, что-то не так с слоем sqlite в целом. Кто-нибудь видел это раньше? Есть ли вариант восстановления кроме очистки моего устройства? В настоящее время он работает под управлением версии 3.1.3, и мне очень не хочется обновляться до версии 4, потому что в настоящее время это мой единственный способ проверить, будет ли приложение работать для людей, которые не обновились.

Я заметил одну вещь: вскоре после того, как я впервые столкнулся с этой ошибкой, я хотел посмотреть, есть ли проблемы у других приложений. Конечно, приложение iPod забыло обо мне все, но оно смогло восстановиться после синхронизации. Так может есть какой-то режим восстановления? (Хотя даже если я смогу восстановиться для своего приложения, API-интерфейсы Карт могут сжечь большую пропускную способность, если они не смогут кэшировать фрагменты карты ...)

Ryan

1 Ответ

0 голосов
/ 09 октября 2010

Я нашел виновника, и он не имеет ничего общего с Core Data, sqlite или файловой системой. В приложении используется множество небольших аудиоклипов, и я предварительно их кешировал как AVAudioPlayers. Я знал, что это, вероятно, плохая идея, но это было быстро и легко, поэтому я решил, что буду продолжать в том же духе, пока не столкнусь с какой-то проблемой. (Я бы обернул вокруг проигрывателей оболочку, чтобы при необходимости можно было отложить создание экземпляров, не затрагивая остальную часть системы, что я и делаю сейчас.) Я просто предположил, что проблема будет отображаться как проблема с проигрывателем аудио не где-то еще, казалось бы, совершенно не связано.

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

Надеюсь, это поможет кому-то в будущем!

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