0

Я всегда задавался вопросом, когда вы работаете с основными данными, если есть какое-либо значение, чтобы иметь классы моделей, которые не управляются объектами ? Если вместо этого вы сохраняете эти объекты, ваш класс диспетчера данных, который обрабатывает хранилище основных данных, знает, как записывать экземпляры класса (или классов) в базовое хранилище данных, и когда ваше приложение хочет напомнить эти экземпляры о персистентности, хранилище данных имеет метод, который создает экземпляры этих объектов без контекста управляемого объекта?При работе с Core Data вы сохраняете не управляемый объектный класс и версию управляемого объекта

Способ, которым я научился работать с основными данными, заключается в создании классов моделей с использованием модели управляемого объекта, которую xCode дает вам, а затем всякий раз, когда вы создаете или уничтожаете экземпляры этих классов, вы рассматриваете их как управляемые объекты, а не обычные типы экземпляров объектов, создаваемых большинством других классов. Это всегда казалось мне несколько запутанным и сложным, потому что всякий раз, когда вам нужно менять управляемые объекты, вам нужно сделать это через контекст управляемого объекта, который в конце дня является просто базой данных.

Извините, если вопрос запутан, если вам нужно уточнение, я более чем счастлив, я считаю, что обсуждение основных данных несколько сложно.

ответ

2

У меня есть an app, который в значительной степени зависит от основных данных.

Нет, я не верю, что есть какая-либо ценность в наличии не управляемой версии ваших объектов модели. Это только добавило бы сложности (у вас есть куча дополнительного кода для записи), и это уберет некоторые из преимуществ использования Core Data (в основном, ленивой загрузки объектов).

Вы создаете и уничтожаете управляемые объекты через контекст управляемого объекта, но кроме этого управляемые объекты действуют одинаково с не управляемыми. Например, вы можете изменять свойства управляемых объектов, не делая ничего с контекстом управляемого объекта.

Основные данные на самом деле не являются базой данных; это больше похоже на ORM (хотя Apple не ссылается на него как таковой). Это способ сохранить объекты и получить их из постоянного хранилища, и это намного больше, чем хранение материала в базе данных.

Если вы действительно хотите иметь модели не управляемых данных, мое предложение состояло бы в том, чтобы не использовать Core Data вообще. Что-то наподобие FMDB Гуса Мюллера или FCModel от Marco Arment.

Некоторые аспекты базовых данных нелегко разглядеть вокруг вас. Но как только вы это выясните, это не так уж плохо, и это делает некоторые вещи лот проще, чем просто использовать базу данных.

Вы можете прочитать Core Data Programming Guide, но мне лично не повезло с этим, когда вы впервые узнали об этом. Хорошая книга с основными данными, вероятно, была бы хорошей; когда я впервые узнал об этом, я прочитал Core Data for iOS и нашел, что это очень полезно.

+0

Спасибо, что это почти точно ответ, который я искал –