Цель C Новичок: значение для ключа работает, .property нет - PullRequest
0 голосов
/ 19 декабря 2010

2-дневный новичок в объективе C с фоном Ruby / Python.

В настоящее время я озадачен тем, как работают свойства.

У меня есть класс «Персона» с атрибутами «персона» и «повышение».

Если я позвоню

Person *newEmployee = [[Person alloc]init]; 
NSString *pn = [newEmployee valueForKey:@"personName"];
NSLog(@"%@", pn);

все работает просто отлично и денди. Но если я позвоню

Person *newEmployee = [[Person alloc]init]; 
NSString *pn = [newEmployee.personName];
NSLog(@"%@", pn);

Я получаю следующую ошибку:

ошибка: запрос на член 'personName' во что-то, что не является структурой или объединением

У меня сложилось впечатление, что оба были эквивалентны. В классе person.m @synthesize personName, в person.h @property(readwrite, copy)NSString *personName;

Любые предложения наиболее ценны.

Ответы [ 2 ]

2 голосов
/ 19 декабря 2010

Есть ли у вас #import "Person.h" в начале файла, из которого взяты ваши фрагменты кода?

1 голос
/ 19 декабря 2010

При использовании точечного синтаксиса для доступа к свойствам вам не нужны квадратные скобки (если вы не отправляете сообщение этому свойству).Попробуйте это:

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