2013-10-09 191 views
5

夥計們,我正在嘗試執行以下操作。 我有一個數組(NSArray的)稱爲「specialLevels」,該數組看起來像這樣:Objective-C檢查包含int的數組是否包含int

specialLevels = @[@2, @4, @6, @9]; 

這應該是int的一個數組。 我也得到了int'currentLevel'(基本int無對象)。

我想檢查currentLevel是否在specialLevels數組中。 我知道方法'containsObject'存在,但這不適用於我的情況。

你們會在這種情況下推薦做什麼?

所以,我想這一點,但感覺有點怪IMO:

if ([specialLevels containsObject:[NSNumber numberWithInt:currentLevel]]) { 
// other code in here 
} 
+8

你的問題是什麼?你不喜歡這行代碼? – Wain

回答

11

specialLevels不是整數的數組。它是一個NSNumber對象的數組。 @ 2,@ 4,@ 6,@ 8分別創建一個相當於調用[[NSNumber numberWithInt:value]的NSNumber實例。當您調用containsObject時,還需要傳遞一個NSNumber對象,以便containsObject可以匹配該值(使用isEqual :)。

您可以閱讀關於Objective-C literals here

+0

感謝您的解釋! :) – ronnyrr

16

你可以寫交替:

if ([specialLevels containsObject:@(currentLevel)]) { 
    // other code in here 
} 

哪個更符合您的其他代碼的風格保持一致。

+0

真棒,的確非常感謝!但是,這是如何有效的,關於這個的任何文檔? – ronnyrr

+2

在開始使用之前,您是否瞭解'@ 2'在做什麼? @BrianWalker的回答是一個很好的概述。 – Wain

+0

不,我沒有,但現在我做了,謝謝你的解釋!現在清除:) – ronnyrr