我有一个自定义的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;


正确的做法是什么?

谢谢
菲利普

最佳答案

由于您知道marker.data的类型为People *,因此只需将其转换为正确的类型即可:

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


请注意,这仅在marker.data实际上是People *对象(或其子类之一)时才能正常工作。当然,您可以添加assertion test

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


有关使用NSAssert()的重要详细信息,请阅读:What are assertions or NSAssert good for in practice?

07-24 20:45