我正在使用一个NSFetchedResultsController从核心数据结构中提取几千个结果并将它们显示在UITableView. 我有一些可用的选项可以使用谓词执行提取并显示更新的数据,例如按关键字搜索、按作者排序等。
我想在显示之前随机洗牌。我已经创建了一个类别,NSArray其中包含一个shuffle可以完美运行的方法,但是调用该方法[self.fetchedResultsController fetchedObjects]没有任何效果,数据保持不变。我假设这是因为fetchedObjectsis readonly,并且我需要制作一份副本。
我已经制作了那个副本,但我遇到的问题是使新阵列与阵列和平共存fetchedObjects。我可以转到各种详细视图并修改内容,因此我试图确定如何保持fetchedObjects和我的shuffledFetchedObjects数组同步,即使它们的内容顺序不同。
这是我的简单小shuffle类别:
- (NSArray *) shuffle {
NSMutableArray *tmp = [NSMutableArray arrayWithArray: self];
for (int i = [tmp count] - 1; i > 0; i--) [tmp exchangeObjectAtIndex: arc4random() % (i + 1) withObjectAtIndex: i];
return [NSArray arrayWithArray: tmp];
}
我有什么选择来实现这一目标?