如何使用CoreData随机排序

sam*_*ize 3 sorting iphone core-data objective-c

我正在使用NSFetchRequest获取一些项目,可以按热门或随机排序.

按照指南,我可以使用NSSortDescriptor轻松按人气排序项目.

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"popularity" ascending:NO];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [request setSortDescriptors:sortDescriptors];
Run Code Online (Sandbox Code Playgroud)

但是我如何随机排序呢?

Ale*_*lds 5

有没有"随机排序"这样的东西?

如果要随机置换显示的结果NSFetchedResultsController,请记住您正在根据对indexPath控制器获取结果中元素的引用来填充表视图(-objectAtIndexPath:).

因此,您可以做的一件事是NSMutableArray对索引路径(或数组)进行混洗,编写将索引路径映射到置换索引路径的方法.此方法将索引路径作为输入,查找数组(或数组)并将新索引路径作为输出吐出.您可以使用此新索引路径填充表视图.

或者,您可以randomizerTagItem实体添加属性.您可以使用任何排列函数生成整数排列,{ 1 ... n }并将这些数字保存到商店中的每个记录中.保存后,您可以重新应用,应用排序描述符,对randomizerTag您的记录值进行排序.