2011-11-10 61 views
2

我有一個NSArray充滿了不同類型的對象。可以說一個是NSDictionary,另一個是NSData。 我將如何從這個數組中隨機選擇一個對象,然後檢查它是什麼類型的對象。 所以,如果它是一個NSDictionary,我會做方法A. 或者如果它是NSData,我會做方法B.獲取從數組中隨機選擇的對象類型?

我會如何把這個代碼?

謝謝!

回答

7

翻譯成Objective-C的

id obj = [array methodThatReturnsARandomObject]; 
if ([obj isKindOfClass:[NSDictionary class]]) { 
    a(); 
} else if ([obj isKindOfClass:[NSData class]]) { 
    UIImage *image = [UIImage imageWithData:obj] 
} 

或者你也可以做

NSObject *obj = [array methodThatReturnsARandomObject]; 
if ([obj isKindOfClass:[NSDictionary class]]) { 
    a(); 
} else if ([obj isKindOfClass:[NSData class]]) { 
    UIImage *image = [UIImage imageWithData:(NSData *)obj] 
} 

其實並不重要。

+0

一個問題。所以在方法B中,假設我將NSData轉換爲UIImage,我該怎麼做?我試圖使用變量obj,但它似乎會引發警告。 –

+0

你試過[UIImage imageWithData:obj]? –

+0

是的我得到不兼容的指針類型發送'NSObject'到'NSData'類型的參數 –

1

您可以使用一個隨機數生成器,它會得到一個介於0和數組最後一個索引之間的數字。然後,一旦獲得該對象,就可以在從該數組返回的對象上使用isKindOfClass或isMemberOfClass方法。