2011-02-07 6 views
1

私はジョークアプリケーションを作成しました。ここでユーザーはジョークを生成し、ジョークはUILabelに表示されます。しかし、私はジョークショーをランダム化しようとしていますが、私は同じジョークを2回表示したくありません。どうすればいいのか教えてください。私はそれをしようとするには、以下のコードを使用していますが、それは動作していないようです。配列からランダムなオブジェクトを取得し、オブジェクトが同じ場合は新しいオブジェクトを取得

- (IBAction)generateNewJoke { 
if (i < [jokeArray count]) { 
    i++; 
     [userDefaults setInteger:[userDefaults integerForKey:kNewIndex] forKey:kOldIndex]; 

    int oldnumber = [userDefaults integerForKey:kOldIndex]; 
    int newnumber = [userDefaults integerForKey:kNewIndex]; 

    [answerLabel setText:@""]; 
    [userDefaults setInteger:i forKey:kNewIndex]; 

    if (oldnumber == newnumber) { 
     NSLog(@"they are the same"); 
     [userDefaults setInteger:arc4random()%[jokeArray count] forKey:kNewIndex]; 
    } 

    [jokeLabel setText:[jokeArray objectAtIndex:[userDefaults integerForKey:kNewIndex]]]; 

} 
} 

答えて

6

あなたは、アレイ内のすべてのあなたのジョークを持ってshuffle配列して、ただ順番に配列を通過することができます。それは前にシャッフルされていたので、すべてのジョークは異なるでしょう。配列の終わりに達すると、最初から開始します(さらに再シャッフルします)。

+0

配列の最後かどうかはどのようにわかりますか? –

+0

yourIndex> = [yourArray count]; –

関連する問題