簡體   English   中英

iOS如何NSMutableArray檢查它是否包含NSNumber對象?

[英]iOS how does NSMutableArray check if it contains NSNumber objects?

我正在編寫一些代碼,這些代碼將使用NSMutableArray並在其中存儲int值,包含在NSNumbers中。

我想確認使用具有相同值的新NSNumber查詢iOS NSArray或NSMutableArray是合法的 ,如果我需要顯式迭代數組,並檢查每個int值是否等於我想要測試的值?

這似乎有效:

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
}

你做的很好。 為什么不呢?

containsObject:方法實際上遍歷數組並在傳入要檢查的對象的每個對象上調用isEqual:方法。

順便說一句 - 這里沒有什么特別的使用NSNumber 對於任何對象類型的數組都是一樣的。 只要對象的類具有有效的isEqual:方法,它就可以工作。

根據Apple的NSNumber文檔 ,您應該使用isEqualToNumber

isEqualToNumber:返回一個布爾值,指示接收方和給定數字是否相等。 - (BOOL)isEqualToNumber:(NSNumber *)aNumber

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM