2

我有一个自定义的 NSObject 类,让我们调用 People,以及来自 CloudMade RMMarker.h 的一个名为 RMMarker 的类。RMMarker 类有一个名为 data 的属性,它是一个 NSObject。我知道通过这样做来设置数据:

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

如何读取存储在数据中的数据?我只知道它不是

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

这样做的正确方法是什么?

谢谢菲利普

4

2 回答 2

3

既然你知道那marker.data是 type People *,你可以简单地将它转换为正确的类型:

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

请注意,这只有在marker.data实际上是一个People *对象(或其子类之一)时才能正常工作。可以肯定的是,您可以添加一个断言测试

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 回答