ответ

1

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

Это прекрасно работает, но, очевидно, если пользователь открывает файл на двух устройствах и не заботится о сохранении и закрытии, есть вероятность, что их изменения могут быть переопределены.

Apple одобрила приложение Mac, которое использует стандартный NSPsistentDocument для создания и сохранения файлов. К сожалению, они отклонили приложения iOS с некоторой неясной ссылкой на несоблюдение их правил хранения данных, заявив, что документы должны храниться в каталоге/Documents, если они должны быть скопированы в iCloud. Хорошо, если пользователь выбрал iCloud, тогда я храню файлы в местоположении iCloud, предоставляемом вызовами API.

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

Если я пытаюсь использовать UIManagedDocument, то iOS создает структуру папок и сохраняет базу данных внутри этой структуры папок. В диалоговом окне «Файл -> Открыть» Mac отображается эта структура папок, а также файл, который по существу выглядит как обычный файл sqlite. Но тогда, возможно, OS X 10.8.4 не реализует последние данные iCloud/Core Data - кто знает ...

EDIT Вот ссылка на примеры кода и видео, показывающие интеграцию приложений OSX и iOS с использованием Core Data и iCloud , http://ossh.com.au/design-and-technology/software-development/uimanageddocument-icloud-integration/

+0

В обоих приложениях iOS и OS X должны храниться документы iCloud в '/Documents', вы, скорее всего, храните файлы на корневом уровне контейнера, так как это путь, по которому вы возвращаетесь по умолчанию. Все, что на этом уровне не может быть удалено с помощью тонких прикосновений как на уровне/Documents (все или ничего). Если вы создаете приложение «shoebox», у которого нет документов только в одном большом хранилище данных, он сохраняется на корневом уровне контейнера. – theMikeSwan

1

Согласен, это определенно возможно. Я использую NSPsistent документ в OS X 10.8/10.9/10.10 с бинарным базовым форматом данных (без оберток - простые файлы). На iOS я использую UIDocument. Основные данные отлично работают в обеих средах.

Apple утверждает, что NSPsistentDocument не поддерживает iCloud. Правильнее сказать, что это не полностью поддерживается. Большая часть поддержки NSDocument (которая включает доступ к библиотеке документов iCloud из 10.8). Обработка конфликтующих файлов на открытых работах.

Вы не можете включить автоматическое сохранение (которое указано как требование для документов iCloud в Руководстве по дизайну iCloud). Autosave работает асинхронно и определенно не поддерживается NSPersistentDocument.

Так что если вы справляетесь с сохранением файла и конфликтами, можно использовать NSPсерверный документ. Есть некоторые причуды: так, например, если изменение iCloud происходит в OS X для открытого документа, нормальный ответ NSDocument будет заключаться в том, чтобы автоматически возобновить документ. Этого не происходит - и нет предупреждения, что файл был изменен, пока вы не собираетесь сохранить файл. Но, по крайней мере, есть предупреждение. На iOS легче обнаружить изменения, как это происходит с помощью UIDocumentStateChangedNotification.

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

  • Нет связанных вопросов^_^