Mam tablicę z 14 ciągami. Chcę wyświetlić każdy z tych 14 ciągów dla użytkownika bez duplikatów. Najbliższy Dostałem tworząc tablicę liczb całkowitych i tasowanie ich wartości, a następnie odczytu z tablicy ciągów z zastosowaniem jednego z numerów z int tablicy jako wskaźnik:Odczytywanie losowych wartości z tablicy
//appDelegate.randomRiddles is an array of integers that has integer values randomly
appDelegate.randomRiddlesCounter++;
NSNumber *index=[appDelegate.randomRiddles objectAtIndex:appDelegate.randomRiddlesCounter];
int i = [index intValue];
while(i>[appDelegate.currentRiddlesContent count]){
appDelegate.randomRiddlesCounter++;
index=[appDelegate.randomRiddles objectAtIndex:appDelegate.randomRiddlesCounter];
i = [index intValue];
}
hintText.text = [[appDelegate.currentRiddlesContent objectAtIndex:i] objectForKey:@"hint"];
questionText.text = [[appDelegate.currentRiddlesContent objectAtIndex:i] objectForKey:@"question"];
Ale moja droga powoduje zawieszanie i duplikaty. Aha i za każdym razem, gdy czytam wartość z tablicy łańcuchów, ten ciąg jest usuwany z tablicy, co powoduje zmniejszenie liczby o 1. To trochę komplikuje.
Ale czy to nie spowodowałoby duplikatów? – Snowman
@Mohabitar, Nie jeśli za każdym razem, gdy go otrzymasz, obiekt jest usuwany z tablicy. –
Czy nie powinno to być 'arc4random()% [myArray count]' podając liczby od 0 do zliczania -1? W przeciwnym razie ostatni element pozostanie ostatnim, a jeśli count = 1, wykonasz 'arc4random()% 0', co nie jest poprawne. A jeśli chcesz usunąć elementy z tablicy, możesz to powiedzieć lub napisać kod, który to robi. –