2

私はカスタムNSObjectクラスを持っており、Peopleを呼び出すことができ、CloudMadeRMMarker.hからRMMarkerと呼ばれるクラスがあります。RMMarkerクラスには、NSObjectであるdataというプロパティがあります。私はこれを行うことによってデータを設定することを知っています:

People *aPeople = [[People alloc] init];   
marker.data = aPeople;

データに保存されているデータを読み取るにはどうすればよいですか?私が知っているのはそれではない

People *aPeople = [[People alloc] init];
aPeople = marker.data;

そうするための正しい方法は何ですか?

ありがとうフィリップ

4

2 に答える 2

3

marker.dataこれはタイプであることがわかっているのでPeople *、正しいタイプにキャストするだけです。

People *aPeople = (People *)marker.data;

marker.dataこれは、が実際にPeople *オブジェクト(またはそのサブクラスの1つ)である場合にのみ正しく機能することに注意してください。確かに、アサーションテストを追加できます。

People *aPeople = (People *)marker.data;
NSAssert([aPeople isKindOfClass:[People class]], "oops! Wrong type!");

NSAssert()の使用に関する重要な詳細については、以下をお読みください。アサーションまたはNSAssertは実際には何に適していますか?

于 2011-03-31T13:55:03.000 に答える
0

RMMarkerソースからわかることから、データivarはPeopleオブジェクトを保持するだけです。したがって、後でPeopleオブジェクトを参照する場合は、次のようにします。

 People *aPeople = (People *)marker.data;
于 2011-03-31T13:59:21.393 に答える