Основные данные "используют скалярные свойства для примитивных типов данных".

Когда я должен проверять "использовать скалярные свойства для примитивных типов данных" во время создания объектов 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 - Модели данных и объекты модели