Ошибка использования скаляра в управляемом объекте - PullRequest
3 голосов
/ 19 октября 2011

У меня есть код в приложении, которое создает управляемый объект CoreData. В этом коде я использую следующую строку для установки свойства:

theAuthor.authorID = 1;

Свойство объявлено так в заголовке управляемого объекта:

@property (nonatomic) uint32_t authorID;

В iOS 5 все работает нормально, но когда я отлаживаю в iOS 4.3, я получаю эту ошибку:

Свойство authorID является скалярным типом для класса Author. Не удается сгенерировать для него метод установки.

Почему я получаю эту ошибку в 4.3, а не в 5? Должен ли я избегать скалярных свойств? Я пришел в Obj-C из C, поэтому я предпочитаю работать со скалярами, когда могу, так как он более оптимизирован.

Могу ли я лучше реализовать методы получения и установки или изменить свой код, чтобы вместо этого использовать NSInteger или NSNumber?

1 Ответ

3 голосов
/ 19 октября 2011

См. здесь для получения информации об использовании скалярных атрибутов в основных данных. (Кстати, NSInteger - это скаляр). Листинг 3 - это тот, который вас интересует. По сути, вам нужно написать собственный аксессор для него, но это не сложно.

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

...