Я разрабатывал несколько приложений для iOS с использованием Core Data, и это была отличная среда для работы. Однако я столкнулся с проблемой, из-за которой мы более или менее распределяли объекты (синхронизировали) между несколькими платформами. Серверная часть веб-сервера/базы данных и мобильные устройства.
Хотя до сих пор это не было проблемой, статическая природа модели данных, используемой Core Data, меня немного запутала. В основном запрашивается система динамических форм, в которой формы могут создаваться на сервере и распространяться на устройства. Я знаю технику выполнения этого с заданным количеством таблиц с чем-то вроде:
- Таблица форм
- Таблица полей
- Экземпляр таблицы Forms
- Таблица значений экземпляров
и просто связывая все вместе. Однако мне интересно, существует ли альтернативная система Core Data (что-то выше, напрямую связанное с базой данных SQLite), которая позволит использовать более динамичный граф объектов. Даже стандартная ORM была бы хороша, если бы были варианты изменения схемы во время выполнения. Основная причина, по которой я хочу пойти по этому пути, - это производительность в том смысле, что я не хочу, чтобы таблица значений экземпляра взрывалась записями (на локальном устройстве или сервере).
Мой другой вариант - иметь статическую схему (граф объекта) на устройствах iOS, но иметь слой преобразования на стороне сервера, который извлекает правильный объект, заполняет свойства и сохраняет его в правильной таблице. Затем, когда устройства синхронизируются, он делает обратное и разбивает их на экземпляры. Хотя это избавляет сервер от раздутой таблицы значений экземпляров, это все же может быть проблемой на устройстве.
Любые предложения приветствуются.