Приложения Shoebox / Library с автосохранением и версиями в OS X Lion - PullRequest
8 голосов
/ 31 июля 2011

У нас есть приложение в стиле «обувной коробки», которое мы хотим сделать первоклассным гражданином во Льве. Это означает интеграцию Auto-Save & Versions между прочим. В настоящее время у нас нет модели, ориентированной на документы, и мы просто используем простой стек основных данных.

UIPersistentDocument предоставляет действительно простой способ интеграции как автосохранения, так и версий, и я вижу два варианта, которые мы могли бы выбрать для интеграции с новыми API:

  1. «Abuse» NSPersistentDocument для нашего приложения в стиле «обувной коробки». Технически это было бы приложение на основе документов, но пользовательский интерфейс был бы все той же iPhoto-подобной библиотекой. Это концептуально не имеет большого смысла, но мы получили бы много функциональности бесплатно.
  2. Сохраните текущий простой базовый стек данных и внедрите автосохранение и версии вручную.

Я слышал противоречивые мнения представителей Apple о подходе, который мы должны использовать, и было бы здорово прояснить ситуацию, прежде чем мы начнем реализацию. Хотя я думаю, что 1. не следует использовать, это также очень заманчиво, потому что мы получаем много бесплатно. Я даже не смог найти достаточную документацию по ручной реализации автосохранения и версий в приложении Core Data.

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

  • Меня беспокоит конфликт на уровне файловой системы при использовании версий и только одного файла базы данных. Я не смог найти никакой документации по этой теме.
  • Меня беспокоит проблема с производительностью в версиях при просмотре «пробела».
  • Мы не можем принудительно применить только один экземпляр открытой базы данных, поскольку версиям приходится открывать несколько экземпляров. Я беспокоюсь о побочных эффектах и ​​проблемах параллелизма. Концептуально это выглядит как хак, а мне не нравятся хаки.

Если бы мы только хотели интегрировать синхронизацию iCloud, я бы определенно не думал об использовании ориентированной на документы модели для нашего приложения, потому что Core Data поддерживает ее напрямую. Я больше всего беспокоюсь о накладных расходах разработчиков, которые возникли бы, если бы мы придерживались нашей нынешней парадигмы, не основанной на документах.

Есть ли у вас какие-либо советы или идеи о том, как приложения обувной коробки должны быть интегрированы в новый мир Lion?

1 Ответ

3 голосов
/ 31 июля 2011

Боюсь, вы вынуждены использовать первый вариант.Версии реализованы внутри NSDocumentController * sic *, поэтому вам придется использовать какой-то NSDocument, чтобы получить что-нибудь из версий.Я думаю вы также должны добавить окно вашего приложения в NSWindowController к этому документу, чтобы получить красивое маленькое всплывающее меню вверху.Проблема в том, что версии более или менее полностью непрозрачны ...

Но есть вопрос, на который вы сами должны ответить: какие части вашего приложения вы бы хотели включить в версию?Действительно ли имеет смысл иметь все в одном файле, когда дело доходит до восстановления данных?Восстановление версии (кроме копирования и вставки) происходит на уровне файловой системы.И поэтому имеет ли смысл всегда восстанавливать все сразу?Если ваш ответ отрицательный, вам, вероятно, даже придется разделить модель на несколько небольших файлов ...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...