我正在使用一个NSFetchedResultsController
从核心数据结构中提取几千个结果并将它们显示在UITableView
. 我有一些可用的选项可以使用谓词执行提取并显示更新的数据,例如按关键字搜索、按作者排序等。
我想在显示之前随机洗牌。我已经创建了一个类别,NSArray
其中包含一个shuffle
可以完美运行的方法,但是调用该方法[self.fetchedResultsController fetchedObjects]
没有任何效果,数据保持不变。我假设这是因为fetchedObjects
is 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];
}
我有什么选择来实现这一目标?