Я хотел бы создать в Mac OS X в NSPersistentDocument
и прочитать этот документ как UIManagedDocument
на прошивке 7.Являются совместимыми с NSPsistentDocument и UIManagedDocument?
возможно ли это?
Поддерживаются ли оба формата файлов?
Спасибо!
Я хотел бы создать в Mac OS X в NSPersistentDocument
и прочитать этот документ как UIManagedDocument
на прошивке 7.Являются совместимыми с NSPsistentDocument и UIManagedDocument?
возможно ли это?
Поддерживаются ли оба формата файлов?
Спасибо!
Интересный вопрос - я могу подтвердить, что основные файлы данных ядра совместимы. У меня есть приложение 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/
Согласен, это определенно возможно. Я использую 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.
В обоих приложениях iOS и OS X должны храниться документы iCloud в '/Documents', вы, скорее всего, храните файлы на корневом уровне контейнера, так как это путь, по которому вы возвращаетесь по умолчанию. Все, что на этом уровне не может быть удалено с помощью тонких прикосновений как на уровне/Documents (все или ничего). Если вы создаете приложение «shoebox», у которого нет документов только в одном большом хранилище данных, он сохраняется на корневом уровне контейнера. –
theMikeSwan