2011-03-31 189 views
2

我有一個自定義的NSObject類,可以在People中調用,並且可以從CloudMade RMMarker.h中調用一個名爲RMMarker的類。 RMMarker類有一個名爲data的屬性,它是一個NSObject。我知道這樣設置數據:從NSObject屬性讀取自定義的NSObject

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

如何讀取存儲在數據中的數據?我只知道它不是

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

這樣做的正確方法是什麼?

感謝 菲利普

回答

3

既然你知道marker.dataPeople *類型的,你可以簡單地將它轉換爲正確的類型:

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

注意,如果marker.data居然是這樣只會正常工作對象(或其子類之一)。可以肯定,你可以添加一個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?

0

從我可以從RMMarker源數據伊娃將只保留看到你人們反對。所以如果你想在後面引用People對象,請執行以下操作:

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

工作就像一個魅力!謝謝你快速的回覆! – plaetzchen 2011-03-31 14:35:40