Проблема с NSSearchPathForDirectoriesInDomains и постоянными данными - PullRequest
2 голосов
/ 15 мая 2011

Как и предполагалось, мы используем следующий код для получения пути к пользовательскому документу

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

, в результате мы получаем следующий путь: / var / mobile / Applications / 3E3C1F45-6649-4EA3-93FD-CDB802E346EC / Documents /

По указанному пути мы сохраняем все постоянные данные пользователя.

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

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

1 Ответ

12 голосов
/ 15 мая 2011

Когда пользователь обновляет приложение, идентификатор (3E3C1F45-6649-4EA3-93FD-CDB802E346EC) может измениться, но документы и кэши следует скопировать в новый каталог из старого.

Есть ли вероятность, что вы сохраняете путь ABSOLUTE для ваших постоянных данных и пытаетесь использовать его при загрузке файлов?Вы должны сохранять только имена файлов и имена каталогов в каталоге документов и генерировать полный путь каждый раз, когда загружаете ресурс (или, по крайней мере, при запуске), добавляя путь, возвращаемый NSSearchPathForDirectoriesInDomain

Другими словами,не сохраняйте PATHS, например

/ var / mobile / Applications / 3E3C1F45-6649-4EA3-93FD-CDB802E346EC / Documents / MyDirectory / MyFile.txt

Вместосохранить:

/ MyDirectory / MyFile.txt

и добавить его к тому, что возвращается NSSearchPathForDirectoriesInDomain во время выполнения.

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