我的实体中有一些数据。我如何才能以随机顺序获取所有条目。即我想一次又一次地洗牌所有条目。
我在这里找到了这个问题的解决方案:Shuffling the results from an NSFetchedResultsController。但是我想获得带有结果的NSFetchedResultsController
。有任何想法吗?也许使用NSPredicate
或NSSortDescriptor
?
最佳答案
子类NSSortDescriptor
可以更改默认的排序行为。这样的事情应该起作用:
@interface RandomSortDescriptor : NSSortDescriptor
@end
@implementation RandomSortDescriptor
- (id)copyWithZone:(NSZone*)zone
{
return [[[self class] alloc] initWithKey:[self key]
ascending:[self ascending] selector:[self selector]];
}
- (id)reversedSortDescriptor
{
return [[[self class] alloc] initWithKey:[self key]
ascending:![self ascending] selector:[self selector]];
}
- (NSComparisonResult)compareObject:(id)object1 toObject:(id)object2
{
NSUInteger random = arc4random_uniform(3);
switch (random)
{
case 0:
return NSOrderedSame
case 1:
return NSOrderedDescending;
case 2:
return NSOrderedDescending;
}
}
@end
关于ios - NSFetchedResultsController的随机结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17469891/