简而言之,您无法直接从中检索随机对象NSSet.
您需要将集合转换为数组 - 具有可随机化的索引 - 通过重新设计代码以使用数组,或者您可以使用以下伪代码实现此操作:
randomIndex = ...random-generator....(0 .. [set count]);
__block currentIndex = 0;
__block selectedObj = nil;
[set enumerateObjectsWithOptions:^(id obj, BOOL *stop) {
if (randomIndex == currentIndex) { selectedObj = obj; *stop = YES }
else currentIndex++;
}];
return selectedObj;
Run Code Online (Sandbox Code Playgroud)
是的 - 它在抓取对象时迭代集合,可能是整个集合.但是,该迭代几乎就是在转换为NSArray时会发生的事情.只要集是没有那么大,你是不是调用它是经常,没什么大不了的.
| 归档时间: |
|
| 查看次数: |
2427 次 |
| 最近记录: |