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