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