2013-12-12 23 views
9

NSMutableArray kullanan ve NSNumbers içine sarılmış int değerleri depolayan bir kod yazıyorum.iOS NSMutableArray, NSNumber nesneleri içerip içermediğini nasıl kontrol eder?

her int değeri değeri I eşitse ben açıkça diziyi sürekli tekrarlanması gerekiyorsa, aynı değerlerle yeni NSNumbers kullanarak bir iOS NSArray veya NSMutableArray sorgulama, yasal olduğunu doğrulamak ve kontrol etmek istiyorum

karşı test etmek ister misiniz?

NSMutableArray* walkableTiles = [NSMutableArray array];  


[walkableTiles addObject:@(1)]; 
[walkableTiles addObject:@(2)]; 
[walkableTiles addObject:@(3)]; 


if([walkableTiles containsObject:@(1)]) 
{ 
    DLog(@"contains 1"); //test passes 
} 
if([walkableTiles containsObject:[NSNumber numberWithFloat:2.0]]) 
{ 
    DLog(@"contains 2");//test passes 
} 
if([walkableTiles containsObject:[NSNumber numberWithInt:3]]) 
{ 
    DLog(@"contains 3");//test passes 
} 
+0

Ne demek * legal *? Oldukça eminim 'includeObject:' bir noktada diziyi tekrarlar. – dandan78

+1

IncludesObject için spekülasyonunu okudunuz mu? "Bu yöntem, dizideki nesnelerin her birine bir isEqual: mesajı göndererek dizideki anObject öğesinin var olup olmadığını ve (herbirEqual: iletisine parametre olarak birObject geçirerek) olup olmadığını belirler." NSNumber numberWithint yerine –

+0

: literalleri kullanabilir ve @ (3) –

cevap

16

Ne yapıyorsun gayet:

Bu işe görünmektedir. Neden olmasın?

containsObject: yöntemi, aslında dizi üzerinde yineleme yapar ve denetlemekte olduğunuz nesnede geçen her nesnede isEqual: yöntemini çağırır.

BTW - NSNumber kullanımıyla ilgili özel bir şey yok. Bu, herhangi bir nesne türü dizisiyle aynıdır. Nesnenin sınıfı geçerli bir isEqual: yöntemine sahip olduğu sürece, çalışır. Apple's NSNumber documentation Başına

2

, sen isEqualToNumber kullanmalısınız:

isEqualToNumber: alıcı ve belirli bir sayıda eşit olup olmadığını gösteren bir Boole değeri döndürür. - (BOOL) isEqualToNumber: (NSNumber *) aNumber

+0

kullanabilirsiniz. Ancak isEqual iyi çalışır. Bu sadece sıkı yazılmış değil. –

+0

(NSNumber, isEqual'in tanımlandığı NSObject ile uyumludur.) –

İlgili konular