2010-12-19 3 views
0

Ruby/Pythonの背景を持つ2日間の目標-C C初心者ここに。Objective C初心者:valueforキーの仕事、.propertyはありません

私は現在、プロパティの仕組みに困惑しています。

属性 'personName'と 'raise'を持つ 'Person'クラスがあります。

私は

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

呼び出すと、すべてがうまく&ダンディに動作します。私は2つは同等であった印象の下にあったものではありません構造体または共用

にメンバーのリクエスト「PERSONNAME」:

エラー:私は

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

を呼び出す場合しかし、私は次のエラーを取得します。 person.mクラスには@synthesize personNameがあり、person.hには@property(readwrite, copy)NSString *personName;

のいずれかの提案があります。

答えて

2

は、あなたのコードスニペットからあるファイルの先頭に#import "Person.h"を持っていますか?

+0

もしそうでなければ、どちらのコードスニペットもうまくいきません。 – BoltClock

+0

多くのありがとうございます。 @class Personはヘッダーからインポートされましたが.mはインポートされませんでした。私は上記の1つ上の「受取人は前方クラスです」エラーを持っていましたが、無関係であると考えました。すべての作品は今 - 多くのありがとう。 – PlankTon

+0

@unclaimedbaggage:ああ、そうだろう。フォワード宣言は、輸入と比べて常にナッツです。 – BoltClock

1

ドットシンタックスを使用してプロパティにアクセスする場合、角括弧は必要ありません(そのプロパティにメッセージを送信しない限り)。これを試してみてください:

NSString *pn = newEmployee.personName; 
関連する問題