我有一个自定义的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;
这样做的正确方法是什么?
由于 菲利普
答案 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;