2012-01-29 4 views
3

Я читал через Apple Docs, читал пару учебников онлайн и даже смотрел лекции CS193p по iCloud, но есть еще одна вещь, неясно:Позволяет пользователю редактировать/просматривать существующие документы, когда iCloud становится недоступным

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

Например. Приложение «напоминание» в iOS5 позволяет пользователю просматривать/редактировать существующие документы, которые находятся на iCloud, даже если вы находитесь в режиме полета. Затем изменения распространяются в следующий раз, когда доступна служба iCloud.

Это кажется действительно странным для меня. Как вы заполняете список напоминаний, если вашему запросу метаданных не указан действительный URL-адрес для вездесущего контейнера? т. е. вызов URLForUbiquityContainerIdentifier: будет возвращать нуль, поскольку iCloud недоступен. Тогда создание запроса метаданных невозможно, потому что вы не можете предоставить ему URL для запроса. Следовательно, вы не можете заполнять список документов, которые пользователь может просматривать и редактировать в автономном режиме.

Любая помощь или понимание того, как это делается, очень ценится!

============================ ОБНОВЛЕНИЕ ======== ============================

Ok - Я наткнулся на эту тему: here

Это в основном говорить о как файлы хранятся в файловой системе при использовании iCloud. Из того, что я собираю всякий раз, когда файл создается в iCloud, он в основном хранится в специальном расширенном локальном контейнере хранения, который создается при первом вызове URLForUbiquityContainerIdentifier:. Этот специальный каталог управляется iamoud deamon. Помимо сохранения в этом специальном каталоге документ также загружается в облако для использования другими приложениями.

Теперь, если мое предположение верное, вопрос в следующем: Если iCloud внезапно недоступен, как вы получаете доступ к файлам, хранящимся локальным демоном?

ответ

1

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

Does URLForUbiquityContainerIdentifier: return nil when network access is not available?

В целом, метод URLForUbiquityContainerIdentifier: не возвращает ноль, если отсутствует, только когда ICloud искренне недоступна.

+0

Следует также упомянуть, что NSFileManager может блокироваться и должен быть вызван в другом потоке из основного потока. http://stackoverflow.com/questions/9050359/should-urlforubiquitycontaineridentifier-be-called-in-a-thread-outside-the-main/9051105#9051105 – MobileOverlord

Смежные вопросы