0

我有一个里面有 32 个对象的数组。我目前正试图找出一种方法,在我的页面上只显示数组中的某些对象。例如,我只想显示索引 10-18 内的对象。我尝试对数组进行切片以添加范围并且它可以工作,但问题是,我不能让任何对象在同一页面上重复。因此,如果要显示的对象只有 10-18 个,则每个对象应该只显示一次并且以随机顺序显示,所以我尝试的代码如下所示:

NSArray *slice;
slice = [arrayList subarrayWithRange:NSMakeRange(5,7)];
int i = arc4random() % [slice count];
int k = arc4random() % [slice count];
int j = arc4random() % [slice count]
[self.btnRand1 setTitle:[slice objectAtIndex: i] forState:UIControlStateNormal];
[arrayList removeObjectAtIndex:i];
[self.btnRand2 setTitle:[slice objectAtIndex: j] forState:UIControlStateNormal];
[arrayList removeObjectAtIndex:j];
[self.btnRand3 setTitle:[slice objectAtIndex: k] forState:UIControlStateNormal];
[arrayList removeObjectAtIndex:k];

我需要 removeObjectAtIndex 来删除数组中已使用的对象,但鉴于我使用切片仅选择特定对象中的对象,它不起作用并且某些对象将在该范围内重复。正如我所读到的,你根本不能将它用于 NSArrays。

如何为此添加一个不会重复所选范围内的任何对象的范围?

4

1 回答 1

2

您需要将 slice 设置为可变数组。您获得第一个随机索引,然后从数组中删除该条目。根据需要重复多次,直到切片中的项目数。

于 2013-01-22T03:31:02.097 回答