如果你有NSMutableArray,你如何随机洗牌?
(我有自己的答案,发布在下面,但我是Cocoa的新手,我很想知道是否有更好的方法.)
更新:正如@Mukesh所述,从iOS 10+和macOS 10.12+开始,有一种-[NSMutableArray shuffledArray]方法可用于改组.有关详细信息,请参阅https://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objc.(但请注意,这会创建一个新数组,而不是将元素移动到位.)
我为iphone/iPad开发应用程序.我想要对存储在NSArray中的对象进行洗牌.有没有办法用objective-c来实现它?
假设我有一个内部有50-100个对象的NSArray.如何以随机顺序放置数组?
我制作了一个笑话应用程序,用户生成一个笑话,笑话将显示在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]]];
}
}
Run Code Online (Sandbox Code Playgroud) objective-c ×3
iphone ×2
nsarray ×2
cocoa ×1
cocoa-touch ×1
ios ×1
ipad ×1
random ×1
shuffle ×1
sorting ×1