2012-05-13 2 views
0

Я делаю свое первое приложение для iOS и нуждаюсь в некоторой помощи. Вот как это будет работать:Рандомизировать слова

Пользователь вводит слово в текстовое поле, нажимает на кнопку, и на этикетке должно быть, как это: [Users word] [Randomly picked word].

Так что я думаю, что я должен сделать массив со случайными словами, а затем каким-то образом рандомизировать их, когда кнопка нажата, чтобы отобразить случайное слово из многих после слова, введенного пользователем в текстовое поле.

Но как это должно работать? Вот что я имел в виду:

рандомизации это (не знаю, как будто):

NSArray *words = [NSArray arrayWithObjects: @"Blue", @"Green", @"Red", nil ]; 

и вот код для отображения текста из текстового поля:

NSString *labeltext = [NSString stringWithFormat:@"%@", [textField text]]; 

если я положил label.text = labeltext;, тогда он отобразит слово, введенное пользователем, но я застрял в части «отображать случайное слово из массива».

Любая помощь оценена!

+0

возможный дубликат [Чтение случайных значений из массив] (http://stackoverflow.com/questions/7047085/reading-random-values-from-an-array); см. также [Выбор случайного объекта в NSArray] (http://stackoverflow.com/questions/3318902/picking-a-random-object-in-an-nsarray) –

+0

Это должно помочь: http://stackoverflow.com/a/56656/679254 – modocache

ответ

3
NSArray *words = [NSArray arrayWithObjects: @"Blue", @"Green", @"Red", nil ]; 
    NSString *str=[words objectAtIndex:arc4random()%[words count]]; 
    // using arc4random(int) will give you a random number between 0 and int. 
    // in your case, you can get a string at a random index from your words array 
+1

Бросьте -1, и это прекрасно. Без него вы получите indexerror. – Martol1ni

+0

Это дает мне ошибку - Недопустимые операнды для двоичного выражения ('u_int32_t (*) (void)' и 'NSUnteger' (aka 'unsigned int')) – figdig

+0

не может, удаление -1 может привести к ошибке indexOutOfBounds. – zahreelay

0

К ОП. Чтобы случайные ответы не повторялись, настройте свой массив как переменную экземпляра в viewDidLoad контроллера вида. Также создайте свойство elseWords:

@property (nonatomic, сохранить) NSMutableArray * Остальные слова;

Ваш код viewDidLoad будет выглядеть следующим образом:

-(void) viewDidLoad; 
{ 
    //Create your original array of words. 
    self.words = [NSArray arrayWithObjects: @"Blue", @"Green", @"Red", nil ]; 

    //Create a mutable copy so you can remove words after choosing them. 
    self.remainingWords = [self.words mutableCopy]; 
} 

Затем вы можете написать метод, как это, чтобы получить уникальное слово из вашего массива:

- (NSString *) randomWord; 
{ 
    //This code will reset the array and start over fetching another set of unique words. 
    if ([remainingWords count] == 0) 
    self.remainingWords = [self.words MutableCopy]; 

    //alternately use this code: 
    if ([remainingWords count] == 0) 
    return @""; //No more words; return a blank. 
    NSUInteger index = arc4random_uniform([[remainingWords count]) 
    NSString *result = [[[remainingWords index] retain] autorelease]; 
    [remainingWords removeObjectAtindex: index]; //remove the word from the array. 
} 
Смежные вопросы