0

32個のオブジェクトを含む配列があります。私は現在、自分のページの配列内の特定のオブジェクトのみを表示できる方法を見つけようとしています。たとえば、インデックス10〜18内のオブジェクトのみを表示したいとします。配列をスライスして範囲を追加しようとしましたが、機能しますが、問題は、同じページでオブジェクトを繰り返すことができないことです。したがって、表示されるオブジェクトが10〜18しかない場合、各オブジェクトは1回だけランダムな順序で表示される必要があるため、試したコードは次のようになります。

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

スライスを可変配列にする必要があります。最初のランダム インデックスを取得し、そのエントリを配列から削除します。スライス内のアイテムの数まで、必要な回数だけ繰り返します。

于 2013-01-22T03:31:02.097 に答える