Поиск и устранение неисправностей
С iCloud пользователи могут создать содержание на одном устройстве и закончить создавать его на другом. Используйте эти шаги поиска и устранения неисправностей, когда Ваше приложение не поддержит этот бесшовный пользовательский опыт. Для приобретения знаний о средствах отладки iCloud, доступных в XCode, который Вы будете использовать вместе с этими шагами, читайте Используя Средства отладки iCloud. Для дополнительных важных подсказок по отладке, относящихся к каждому поддерживающему iCloud приложению, посмотрите Тестирование и Отладку Вашего Приложения iCloud в Руководстве по проектированию iCloud
Отладка базовых ошибок данных
Чтобы упростить находить проблемы при использовании Базовых Данных с iCloud упростите архитектуру Базового Стека данных — сверхусложнение реализации может сделать ошибки открытия трудными. Сделайте это следующим инструкции в Использовании Хранилища SQLite с iCloud.
Если Ваши управляемые объекты ведут себя противоречиво, гарантируют сброс контекста (ов) управляемого объекта в Вашем NSPersistentStoreCoordinatorStoresWillChangeNotification
обработчик уведомления и отбрасывающий любые ссылки управляемого объекта Ваше приложение содержит. После получения NSPersistentStoreCoordinatorStoresDidChangeNotification
уведомление, необходимо повторно выбрать содержание.
Если Вы не получите уведомление, то Вы ожидаете получать, удостоверьтесь, что Вы подписались на эти уведомления достаточно рано. Многие уведомления изменения состояния iCloud Базовых Данных отправляются во время запуска приложения или вскоре после — например, прежде, чем добавить поддерживающее iCloud персистентное хранилище к Вашему персистентному координатору хранилища.
Отладка двойных данных и без вести пропавшие проблем данных
Когда Ваше приложение теряет данные или создает многократные записи, первопричина обычно связывается с тем, как Вы переместили или объединили свои данные. Необходимо протестировать приложение одновременно на многократных устройствах для определения то, что происходит, когда записи созданы или удалены. Изменения Содержания Сообщений Данных Ядра анализа от iCloud и Обнаружения и Удаления Двойных Записей для стратегий реализации.
Если приложение имеет двойные записи или не может найти, что запись удаляет, при слиянии изменений Вы, возможно, зарегистрировались для уведомлений iCloud Базовых Данных в многократных местах. Вычеркните из списка контроллеры представления, идущие вне экрана на iOS и неактивных окнах на OS X.
Если приложение имеет двойные записи при миграции многократных коллег алгоритм дедупликации не функционирует, или это правильно не определяет уникальность. Когда Ваша миграция выполнения приложения на многократных устройствах, они все должны выбрать ту же запись для хранения и та же запись (и) для удаления.
Если записи приложения удалены при миграции многократных коллег алгоритм дедупликации детерминировано не выбирает запись победы. Когда Ваша миграция выполнения приложения на многократных устройствах, они все должны выбрать ту же запись для хранения и та же запись (и) для удаления. Иначе, каждое устройство выберет различные записи, и те решения будут все сохранены к iCloud.
Отладка проблем производительности
Когда Вы интегрируете свое Базовое приложение Данных с iCloud, следуете Базовым инструкциям платформы Данных и методам наиболее успешной практики для настройки производительности приложения в контексте iCloud. Как часть этого усилия, рассмотрите содержание, это создается на других устройствах, в то время как работает Ваше приложение.
Если Вашему пользовательскому интерфейсу не удается обновить при импорте изменений в содержании проверьте, что Вы правильно диспетчеризируете назад на основную очередь, использующую dispatch_async(3)
функционируйте или NSOperationQueue
очередь. Можно также сконфигурировать подписки уведомления для вызова обработчика на основную очередь. Вспомните, что управляемые объекты не ориентированы на многопотоковое исполнение, таким образом, Вы могли бы объединить изменения на фоновом контексте управляемого объекта и затем повторно выбрать на Вашем основном потоке. Если Ваш массив изменений является маленьким, изменения слияния в контекст управляемого объекта на основном потоке.
Если Ваш пользовательский интерфейс замораживается, когда Вы импортируете изменения в содержании, открываете Отчет iCloud узнать, когда Ваше приложение получает изменения от iCloud. Тогда смотрите на Отчет CPU и Отчет использования памяти прямо после того события — необходимо видеть короткий скачок в CPU и использовании памяти, в то время как Базовые Данные импортируют изменения. Длинный блок высокого CPU и использования памяти является знаком, что или набор изменений является слишком большим или Ваше приложение, получает много массивов изменений в быстрой преемственности. Чтобы увеличить производительность и уменьшить CPU и использование памяти, можно оптимизировать при сохранении контекста управляемого объекта. Для стратегий оптимизации считайте Базовые Изменения Содержания Сообщений Данных из iCloud и Методов наиболее успешной практики.