Назначения с использованием objectAtIndex - PullRequest
0 голосов
/ 16 октября 2011

Почему это работает:

firstItem = @"Some value";

И это приводит к ошибке при попытке доступа к свойству NSString firstItem:

NSArray *values = [dict allVaues];
firstItem = (NSString *)[values objectAtIndex:0];

Из .m:

@synthesize firstItem;

из .ч

NSString *firstItem;
@property (nonatomic, retain) IBOutlet NSString *firstItem;

ПРИМЕЧАНИЕ: Если я NSLog из метода, который я установил, это свойство показывает правильные значения для ошибочного примера, но в дальнейшем данные недоступны. Я предполагаю, что мне нужно установить значения явно, а не как ссылки на мой NSMutableDictionary, который находится вне области видимости. Любой совет?

1 Ответ

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

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

@synthesize firstItem=_firstItem;

, то вы заметите, что ваш код, использующий firstItem, больше не будет компилироваться.Это хороший признак того, что вы случайно игнорируете средства доступа к свойству.Вы должны использовать self.firstItem = foo вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...