【问题标题】:Getting random objects from an array, and if the objects are the same, get a new object从数组中获取随机对象,如果对象相同,则获取一个新对象
【发布时间】:2011-02-07 23:05:57
【问题描述】:

我制作了一个笑话应用程序,用户在其中生成一个笑话,该笑话将显示在 UILabel 中。但是,我正在尝试随机化笑话节目,但我不想两次显示同一个笑话。请你能告诉我我怎么能做到这一点。我正在使用下面的代码尝试这样做,但它似乎不起作用。

- (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]]];

}
}

【问题讨论】:

    标签: iphone objective-c cocoa-touch


    【解决方案1】:

    您可以将所有笑话放在一个数组中,shuffle 数组,然后按顺序遍历数组。因为之前是洗牌的,所以所有的笑话都会不一样。当你到达数组的末尾时,从头开始(甚至重新洗牌)。

    【讨论】:

    • 我如何知道它是否是数组的末尾?
    • yourIndex >= [yourArray count];
    猜你喜欢
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    相关资源
    最近更新 更多