从NSObject属性读取自定义NSObject

时间:2011-03-31 13:49:57

标签: iphone objective-c sdk nsobject

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

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

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

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

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

由于 菲利普

2 个答案:

答案 0 :(得分:3)

由于您知道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?

答案 1 :(得分:0)

从我从RMMarker源中可以看到,数据ivar将保留您的People对象。因此,如果您想稍后引用People对象,请执行以下操作:

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