我有一个包含 17 个对象的 NSArray
,如下所示:
NSArray *objArray = [[NSArray alloc]initWithObjects: @"1",@"2",@"3",@"4",@"5",@"6"
,@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17", nil];
和一个带有随机数的int
如下:
int random = arc4random()%17+1;
我想从这个 NSArray
中获取一个随机对象而不是重复的,即使我关闭了应用程序(可能通过使用 NSUserDefaults
)。
如果我已经获得了所有对象,我想为相同的对象生成一个新的随机序列。
最佳答案
您可以通过制作数组的可变副本来完成此操作,然后从该数组中随机选择后,删除相同的对象。当你想保存数组时,保存可变数组本身,这样当应用程序重新启动时可以从你离开的地方恢复。这个小测试应用程序就是这样做的,并且只记录随机选择的值:
- (void)viewDidLoad {
[super viewDidLoad];
self.objArray = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17"];
self.mut = [self.objArray mutableCopy];
}
-(IBAction)pickNumber:(id)sender {
int index = arc4random_uniform(self.mut.count);
NSLog(@"%@", self.mut[index]);
[self.mut removeObjectAtIndex:index];
if (self.mut.count == 0) {
self.mut = [self.objArray mutableCopy];
NSLog(@"*******************");
}
}
关于objective-c - 从 NSArray 中获取一个随机对象而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16791343/