我需要从 75 个对象的 NSMutableArray 中挑选 32 个不同的对象。它可以是 1 到 32、2 到 33 或 10 到 42。我应该使用哪些函数来获取新数组?对不起,我是菜鸟。
问问题
98 次
2 回答
3
如果您想要随机索引中的 N 个连续对象,请尝试以下操作:
NSArray *arrayWithNConsecutiveObjects(NSArray *arr, int n)
{
int subIdx = arc4random_uniform((unsigned) (arr.count - n));
return [arr subarrayWithRange:NSMakeRange(subIdx, n)];
}
如果需要 32 个随机对象,可以扩展此方法对数组进行随机排序:
NSArray *arrayWithNObjects(NSArray *arr, int n)
{
arr = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
// random sort
return arc4random_uniform(3) - 1; // one of -1, 0, and 1
}];
int subIdx = arc4random_uniform((unsigned) (arr.count - n));
return [arr subarrayWithRange:NSMakeRange(subIdx, n)];
}
于 2012-08-12T16:18:29.000 回答
2
您可以使用继承自的适当方法NSArray
来检索 32 个连续元素的切片:
int offset = 4;
NSArray *slice = [array subarrayWithRange:NSMakeRange(offset, offset+32)];
于 2012-08-12T16:15:59.400 回答