[英]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.