Piszę kod, który będzie używać NSMutableArray i przechowywania wartości int w nim, opakowane w NSNumbers.iOS jak NSMutableArray sprawdza, czy zawiera obiekty NSNumber?
Chciałbym potwierdzić, że odpytywanie IOS NSArray lub NSMutableArray użyciu nowych NSNumbers z samymi wartościami jest legalne, z, jeśli muszę wyraźnie iteracyjne nad tablicy i sprawdzić, czy każda wartość int jest równa wartości I chcesz przetestować przeciwko?
To wydaje się działać:
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
}
Co masz na myśli przez * legal *? Jestem całkiem pewien, że 'containsObject:' iteruje po tablicy w pewnym momencie. – dandan78
Czy przeczytałeś specyfikację dla containsObject? "Ta metoda określa, czy obiekt anObject jest obecny w tablicy, wysyłając komunikat isEqual: do każdego z obiektów tablicy (i przekazując anObject jako parametr do każdego komunikatu isEqual:)." –
Zamiast numeru NSNumberWithint: możesz używać literałów i używać @ (3) –