iOS 7: что случилось с UIDocument/UIManagedDocument и iCloud?

Я просматривал сессии WWDC 2013, посвященные iCloud и Core Data. Я очень надеялся увидеть там новые видео для UIManagedDocument или UIDocument. Возможно, вы помните, что эти классы теоретически предлагают отличный и простой способ сохранения данных с (UIManagedDocument) или без CoreData (UIDocument) локально и в iCloud. Но были или все еще есть некоторые действительно раздражающие системные ошибки, связанные с этими концепциями, особенно при синхронизации данных между устройствами, см., например, здесь.

Однако НЕ было видео, посвященного теме UIManagedDocument/UIDocument и iCloud. Видео «Что нового в Core Data и iCloud?» просто охватывает классический подход к использованию постоянных хранилищ Core Data, который расширен новым API для автоматического охвата резервных хранилищ и синхронизации. Кто-нибудь знает, что случилось с UIManagedDocument/UIDocument? Отказались ли они от этого и решили, что классический подход — лучший способ иметь приложения с синхронизацией Core Data и iCloud?


person FrankZp    schedule 18.09.2013    source источник
comment
Спросите еще раз через 3/4 часа, так как технически это все еще находится под соглашением о неразглашении.   -  person CW0007007    schedule 18.09.2013
comment
Я действительно считаю, что новые резервные хранилища, добавленные в реализацию iCloud в iOS 7, решают проблему вашего примера. См. Что нового в Core Data и iCloud WWDC 2013, сессия 207.   -  person dtrotzjr    schedule 19.09.2013
comment
Вы нашли ответ на это сомнение? Мне действительно любопытно узнать, является ли использование UIManagedDocument хорошей идеей или нет.   -  person MatterGoal    schedule 08.11.2013


Ответы (1)


Насколько я понимаю, UIManagedDocument — это легкая оболочка над основными данными, позволяющая абстрагироваться от некоторых общих настроек и взаимодействий с основными данными. Это также способ упаковки других элементов «документа», но управление синхронизацией этих элементов в iCloud остается упражнением для разработчика.

Если вы используете iCloud, UIManagedDocument не поддерживает «дополнительный контент» в каталоге документов (см. AdditionalContentForURL:error: и связанные методы)

На это ссылается: UIManagedDocument

См. также: additionalContentForURL:error:

Почти все, что относится к основным данным, применимо и к UIManagedDocument, где он использует основные данные под капотом. Например, я использую новые резервные хранилища в своем проекте APManagedDocument.

Какие функции вы надеялись увидеть в iOS 7?

person dtrotzjr    schedule 18.09.2013
comment
Я не разделяю твоего мнения. UIManagedDocument является подклассом UIDocument и интегрируется в расширение своего суперкласса с Core Data. Сам UIDocument (и, следовательно, UIManagedDocument) является абстрактным классом для управления действиями, связанными с документами, такими как скоординированное чтение и запись, синхронизация, разрешение конфликтов и т. д. Поэтому синхронизация iCloud является встроенной, а не упражнением для разработчиков (см. ссылки на классы для них) . Я надеялся увидеть дальнейшее развитие этих классов И необходимое исправление ошибок для процессов синхронизации, которые стоят за скоординированным чтением и записью с использованием iCloud. - person FrankZp; 19.09.2013
comment
В этом году на WWDC было ясно указано, что в настоящее время UIManagedDocument синхронизируется только основная часть данных UIManagedDocument. Я согласен с вами, было бы неплохо, если бы Apple продолжила эти курсы, но я думаю, что в этом году они сосредоточились на стабилизации синхронизации основных данных. У меня есть ощущение, что UIManagedDocument, возможно, был немного преждевременным, учитывая, что синхронизация основных данных только сейчас начинает формироваться. Будем надеяться, что следующий год будет лучше. - person dtrotzjr; 19.09.2013
comment
P.S. Когда я говорю оставлено в качестве упражнения для разработчика, я имею в виду то, что UIManagedDocument сегодня. - person dtrotzjr; 19.09.2013
comment
Не могли бы вы перечислить сеанс(ы), в ходе которых стало ясно, что синхронизация UIManagedDocument's основных данных стабилизировалась? На самом деле, это была бы хорошая новость... - person FrankZp; 19.09.2013
comment
UIManagedDocument не упоминалось конкретно, это подразумевалось в том, что UIManagedDocument использует основные данные под капотом, а синхронизация основных данных была в центре внимания группы основных данных в прошлом году. - person dtrotzjr; 19.09.2013
comment
См.: Что нового в Core Data и iCloud WWDC 2013 Session 207. Например, они упоминают резервные хранилища — они не упомянули, что они работают для UIManagedDocument, но они работают, и они работают удивительно хорошо, что является основой для моего APManagedDocument - person dtrotzjr; 19.09.2013
comment
См. также WWDC 2013 Platforms State of the Union Session 101 — в них упоминается синхронизация основных данных в iOS 7. Это краткое упоминание, но оно обнадеживает. - person dtrotzjr; 19.09.2013
comment
Спасибо за это. Но, к сожалению, это не убеждает меня в том, что синхронизация iCloud UIManagedDocuments Core Data исправлена, поскольку это касается в основном системных процессов синхронизации журнала транзакций, которые описаны здесь: stackoverflow.com/a/15174065/1685971 - person FrankZp; 19.09.2013
comment
Я понимаю, как работают журналы транзакций... Думаю, я не понимаю вашего вопроса. :-( - person dtrotzjr; 19.09.2013
comment
@FrankZp Смотрите мой обновленный ответ выше. Я немного задокументировал свои претензии теперь, когда iOS 7 больше не находится под NDA. - person dtrotzjr; 28.09.2013
comment
Какие функции вы надеялись увидеть в iOS 7? На самом деле я не ожидал каких-либо дополнений, но они представили этот класс в iOS 5, якобы он значительно упрощает работу с Core Data, но в каждом примере, который они приводят, они используют традиционный стек. Какой предпочтительный подход? Используйте UIManagedDocument, только если вы действительно имеете дело с документами и традиционным стеком, если нет? Как часто приходится иметь дело с документом, содержание которого поддерживается Core Data...? - person Scott Berrevoets; 28.09.2013