2012-04-11 3 views
2

У меня есть настройка iCloud + Core Data в библиотечном стиле. Приложение, над которым я работаю, содержит данные пользователя, которые находятся за экраном входа. После входа пользователя в систему создается экземпляр Persistent Store Coordinator и добавляется к нему iCloud store.Обработка ошибок iCloud Core

Вот мой случай использования и проблема:

1) Начните использовать приложение, данные сохраняются в ICloud 2) Удалить приложение 3) снова построить к устройству, войдите в приложение, ожидают сделки журналы, которые нужно вызвать, и воссоздать данные в локальном хранилище. 4) Когда используется медленное соединение, я получаю ошибки в журнале отладки, заявляя несколько раз, что загрузка файла не удалась ... 5) Приложение пустое, и теперь оно выглядит так, как будто восстановление резервной копии не удалось.

Моя конфигурация действительно правильная и работает на 100% по нисходящему соединению.

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

Любой совет будет оценен! Благодарю.

ответ

1

iCloud - это технология, которая все еще очень в зачаточном состоянии, особенно интеграция с Core Data.

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

Существует не перезвон, который вы можете использовать прямо сейчас, ваше приложение должно быть (если возможно) достаточно умным, чтобы знать, когда был загружен правильный контент. В зависимости от того, сколько контента вам нужно, вы можете сделать некоторые инвентаризации, увидев, какие данные вы получили от уведомления: NSPersistentStoreDidUpdateUbiquitousContentChangesNotification, если таковые имеются, и проверку словаря userInfo для вставленных (или обновленных, удаленных) строк.

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

Это лишь некоторые предложения, ваша ситуация может быть очень различной. Надеюсь, это по крайней мере помогает.

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