У нас есть приложение в стиле «обувной коробки», которое мы хотим сделать первоклассным гражданином во Льве. Это означает интеграцию Auto-Save & Versions между прочим. В настоящее время у нас нет модели, ориентированной на документы, и мы просто используем простой стек основных данных.
UIPersistentDocument предоставляет действительно простой способ интеграции как автосохранения, так и версий, и я вижу два варианта, которые мы могли бы выбрать для интеграции с новыми API:
- «Abuse» NSPersistentDocument для нашего приложения в стиле «обувной коробки». Технически это было бы приложение на основе документов, но пользовательский интерфейс был бы все той же iPhoto-подобной библиотекой. Это концептуально не имеет большого смысла, но мы получили бы много функциональности бесплатно.
- Сохраните текущий простой базовый стек данных и внедрите автосохранение и версии вручную.
Я слышал противоречивые мнения представителей Apple о подходе, который мы должны использовать, и было бы здорово прояснить ситуацию, прежде чем мы начнем реализацию. Хотя я думаю, что 1. не следует использовать, это также очень заманчиво, потому что мы получаем много бесплатно. Я даже не смог найти достаточную документацию по ручной реализации автосохранения и версий в приложении Core Data.
Я бы действительно использовал 1., но я вижу некоторые проблемы:
- Меня беспокоит конфликт на уровне файловой системы при использовании версий и только одного файла базы данных. Я не смог найти никакой документации по этой теме.
- Меня беспокоит проблема с производительностью в версиях при просмотре «пробела».
- Мы не можем принудительно применить только один экземпляр открытой базы данных, поскольку версиям приходится открывать несколько экземпляров. Я беспокоюсь о побочных эффектах и проблемах параллелизма.
Концептуально это выглядит как хак, а мне не нравятся хаки.
Если бы мы только хотели интегрировать синхронизацию iCloud, я бы определенно не думал об использовании ориентированной на документы модели для нашего приложения, потому что Core Data поддерживает ее напрямую. Я больше всего беспокоюсь о накладных расходах разработчиков, которые возникли бы, если бы мы придерживались нашей нынешней парадигмы, не основанной на документах.
Есть ли у вас какие-либо советы или идеи о том, как приложения обувной коробки должны быть интегрированы в новый мир Lion?