Миграция файлов приложений с iOS7 на iOS8

В настоящее время я тестирую свое приложение на iOS8. Все работает хорошо на чистой iOS8, но я борюсь с миграцией файлов приложений с iOS7, которая произойдет для пользователей, когда iOS8 будет публично выпущена. Поскольку мое приложение использует несколько «стандартных каталогов» (документы, поддержка приложений, ...), я хотел бы быть уверен, что миграция пройдет гладко.

Структура файловой системы приложения изменилась на iOS8 (см. бета-версия iOS). 4 Примечание к выпуску и руководство по программированию файловой системы).

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

Есть ли у вас какие-либо сведения об (исчерпывающем) списке изменений, которые произойдут во время обновления iOS7 до iOS8? Я не могу найти документацию по этому вопросу. Есть ли способ протестировать/симулировать миграцию песочницы приложения iOS7 в новую структуру песочницы iOS8?

Спасибо

ДОПОЛНИТЕЛЬНЫЙ вопрос: меняется ли GUID приложения при обновлении ОС?


person rockeye    schedule 24.07.2014    source источник
comment
Если вы используете функцию NSSearchPathForDirectoriesInDomains или методы URLForDirectory:inDomain:СоответствующиеForURL:create:error: для доступа к своим каталогам, все должно быть в порядке. Apple рекомендует использовать эти методы для доступа к каталогам.   -  person Owen Hartnett    schedule 24.07.2014
comment
Кроме того, если вы не уверены, загрузите бета-версию Xcode 6 и протестируйте ее в симуляторе iOS 8.   -  person Owen Hartnett    schedule 24.07.2014
comment
developer.apple.com/library/ios/releasenotes/General/   -  person MaxouMask    schedule 19.09.2014


Ответы (1)


Структура файловой системы контейнеров приложений изменилась на диске.

Вместо того, чтобы полагаться на жестко закодированную структуру каталогов, используйте функцию NSSearchPathForDirectoriesInDomains или метод URLForDirectory:inDomain:appropriateForURL:create:error: класса NSFileManager.

Используя метод URLForDirectory:inDomain:appropriateForURL:create:error: из NSFileManager:

NSFileManager *yourFileManager = [NSFileManager defaultManager];
NSURL *urlForSomeDirectory = [yourFileManager URLForDirectory:NSDocumentDirectory inDomain:NSAllDomainsMask appropriateForURL:nil create:YES error:nil];

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

Вы можете заменить NSDocumentDirectory на многие другие константы. Вы также можете заменить последний параметр на NSError **, если хотите отловить ошибку.

Бонусный вопрос: это не должно, однако вы никогда не знаете.

person Andrew    schedule 24.07.2014
comment
Действительно, я использую функцию NSSearchPathForDirectoriesInDomains, но в какой-то момент я полагаюсь на структуру файловой системы до iOS8 и где-то использовал относительный путь... Спасибо за бонусный ответ, я хотел бы дать вам бонусный балл! - person rockeye; 28.07.2014