Подтвердить что ты не робот

Каковы "примитивные" аксессоры для Core Data?

Из Руководство по программированию основных данных (мой акцент):

По умолчанию Core Data динамически создает эффективные общедоступные и примитивные методы получения и установки методов доступа для моделируемых свойств (атрибутов и отношений) классов управляемых объектов.

Хотя я использовал Core Data и mogenerator с самого начала, начиная с Objective-C, у меня никогда не было посмотрите, что это означает, до тех пор, пока приложение не будет отклонено из-за предполагаемого использования частного API. Длинная история о сгенерированном методе setPrimitiveTypeValue:, но не о том, о чем мой вопрос.

Во время чтения руководства я наткнулся на идею публичных и примитивных аксессуаров для атрибутов сущности. Другая цитата, но далее:

Например, если объект с атрибутом firstName, Core Data автоматически генерирует firstName, setFirstName:, primitiveFirstName и setPrimitiveFirstName:.

Для чего нужны примитивные аксессоры? Это просто так, что вы можете напрямую назначить значение BOOL, не обернув его в NSNumber? Если да, то почему бы генератору возникли проблемы с созданием всех типов <Attribute>Value, set<Attribute>Value:, primitive<Attribute>Value, setPrimitive<Attribute>Value: аксессуаров?

Я смущен, кто может мне помочь?


Похожие вопросы:

4b9b3361

Ответ 1

Насколько я понимаю, примитивный метод выполняет фактическое получение и настройку, но не выдаёт никаких уведомлений KVC или KVO ('willAccessValueForKey' и т.д.). Открытый метод вызывает примитивный метод, но завершает вызов в вызовах KVO. Поэтому из-за пределов объекта вы обычно вызываете общедоступные методы, но если вам нужно использовать свойства объекта по внутренним причинам (например, для проверки или получения какого-либо другого свойства), вы должны использовать примитивные методы, чтобы избежать стрельбы все уведомления.

Я бы приветствовал любые исправления или пояснения в ответе, поскольку это предмет, который меня интересует, но не полностью разбирающийся.

Ответ 2

@jrturton отвечают на вопросы, касающиеся Custom Атрибут и To-One Relationship Accessor Methods, где открытый доступ является простым.

Кроме того, чтобы полностью поддерживать сторонние Кому-многие отношения, в пользовательской реализации общедоступным аксессуарам, возможно, придется вызывать примитивные аксессоры в сочетании с методами NSMutableSet (unionSet: и minusSet:), которые должен быть обернут внутри пар методов KVO (будет... сделал...).