Когда я должен проверять "использовать скалярные свойства для примитивных типов данных" во время создания объектов NSManagedObject
?
Что это будет стоить мне (улучшит ли моя база данных производительность или станет более легким)?
Основные данные "используют скалярные свойства для примитивных типов данных".
Ответ 1
До того, как скалярные свойства iOS 5 и OSX 10.7 не могут быть автоматически сгенерированы, вам необходимо добавить реализаторы сеттера и геттера, которые вызывают некоторое наказание. Оптимизированы автоматически генерируемые свойства. Я не знаю никаких других наказаний.
Скалярные и нескалярные свойства представлены теми же типами в БД, поэтому изменений в размере БД не будет.
Вы должны выбрать, когда использовать скаляр, в зависимости от способа доступа к этим свойствам. Например, вам нужно будет обернуть скалярные свойства в объекте cocoa, если вы собираетесь добавить их в коллекцию (NSArray, NSSet, NSDictionary).
Ответ 2
Core Data поддерживает многие распространенные типы данных, такие как целые числа, float, booleans и т.д. Однако по умолчанию редактор модели данных генерирует эти атрибуты как свойства
NSNumber
в подклассах управляемых объектов. Это часто приводит к бесконечнымfloatValue
,boolValue
,integerValue
или аналогичным вызовам этихNSNumber
объектов в коде приложения.Но мы также можем просто указать эти свойства с их правильным скалярным типом, например. как
int64_t
,float_t
илиBOOL
, и он будет работать с Core Data. Xcode даже имеет небольшой флажок в диалоговом окне сохранения генератораNSManagedObject
( "Использовать скалярные свойства для примитивных типов данных" ), который делает это для вас.
Источник: objc.io - Модели данных и объекты модели