Невозможно сделать атрибут переходных данных Core Data закрытым - PullRequest
0 голосов
/ 14 октября 2011

У меня есть объект Core Data Series с переходным процессором indexCurrent. Когда внешние классы обращаются к indexCurrent, я хочу, чтобы они отправляли аргумент, который можно использовать для проверки необходимости обновления значения indexCurrent перед его возвратом. Поэтому я объявил indexCurrent как частную переменную и разрешил внешний доступ к ней только через этот специальный метод с аргументом.

Но хотя компилятор выдает предупреждения «метод не найден», он позволяет внешним классам вызывать как indexCurrent, так и setindexCurrent:, и этот неисправный код выполняется с полным успехом.

Вот интерфейс Series:

@interface Series : NSManagedObject {
@private
NSNumber *indexCurrent;  
}

indexCurrent не прописан, не объявлен как динамический в файле реализации, и я не написал indexCurrent или setindexCurrent: методы доступа.

Что я делаю не так? Как я могу сделать indexCurrent личным?

1 Ответ

2 голосов
/ 14 октября 2011

@ dynamic не вызывает генерации кода.Базовые данные генерируют код для методов доступа к свойствам независимо от того, используете ли вы @dynamic.@dynamic просто сообщает компилятору, что код будет сгенерирован, поэтому ему не нужно предупреждать об отсутствующих методах.Вот почему вы получаете предупреждения, но не получаете ошибок времени выполнения.

@private для переменной экземпляра мало что делает.По умолчанию это @protected, что означает, что внешние классы не могут получить к нему доступ в любом случае, только сам класс и подклассы.В любом случае средства доступа к базовым данным по умолчанию не используют переменные экземпляра.

Я не уверен, как делать то, что вы хотите.

...