2010-12-19 99 views
0

爲期2天的目標-c newbie這裏有一個Ruby/Python背景。Objective C newbie:valueFor key works,.property does not

我目前難住屬性如何工作。

我有一個班'人'屬性'personName'和'提高'。

如果我打電話

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

你在你的代碼片段是從文件的開頭有#import "Person.h"

+0

如果他沒有,那麼這兩個代碼段都不會起作用。 – BoltClock 2010-12-19 10:14:03

+0

非常感謝。 @class Person是從標題導入的,但不是.m。我有一個'接受者是一個前鋒班'錯誤之上的提到,但認爲它是無關的。現在所有的作品 - 非常感謝。 – PlankTon 2010-12-19 10:24:10

+0

@unclaimedbaggage:啊,那就是了。與進口相比,前向聲明總是很瘋狂。 – BoltClock 2010-12-19 10:26:28

1

當使用點語法訪問屬性時,不需要方括號(除非將消息發送到該屬性)。試試這個:

NSString *pn = newEmployee.personName;