2013-10-09 21 views
5

folks içerip içermediğini kontrol eder, aşağıdakileri yapmaya çalışıyorum. Ben bir dizi (NSArray) 'specialLevels' olarak adlandırılan var o dizi şöyle görünür:Amaç-C, ints içeren dizilerin int

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

Bu int yılların bir dizi olmalıdır. Ayrıca int 'currentLevel' (temel int no object) var.

Ayrıca currentLevel'in de specialLevels dizisinde olup olmadığını kontrol etmek istiyorum. 'includeObject' yönteminin mevcut olduğunu biliyorum, ancak bu durum benim durumumda çalışmayacak.

Bu durumda ne yapmanızı önerirsiniz?

Bu yüzden bu düşündüm, ama imo Garip bir his:

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

Sorununuz nedir? Kod satırını sevmiyor musun? – Wain

cevap

11

specialLevels bir dizi yayın değildir. NSNumber nesnelerinin bir dizisidir. @ 2, @ 4, @ 6, @ her biri, [[NSNumber numberWithInt: value] çağrısına eşdeğer bir NSNumber örneğini oluşturur. IncludesObject öğesini çağırdığınızda, bir NSNumber nesnesini de geçirmeniz gerekir; böylece, contentObject değeri (isEqual :) kullanarak eşleşebilir.

Objective-C literals here ile ilgili bilgileri okuyabilirsiniz.

+0

Bu açıklama için teşekkürler! :) – ronnyrr

16

Alternatif bir yöntem olarak yazabilirsiniz: Diğer kod stili ile tutmak daha

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

.

+0

Harika, gerçekten teşekkürler! Fakat bu nasıl geçerli, bu konuyla ilgili herhangi bir belge var mı? – ronnyrr

+2

Kullanmaya başlamadan önce 2'nin ne yaptığını anladınız mı? @BrianWalker gelen cevap iyi bir bakış. – Wain

+0

Hayır Yapmadım, ama şimdi yapıyorum, bu açıklama için teşekkürler! Benim için şimdi temizle :) – ronnyrr

İlgili konular