从Core Data中获取随机对象

时间:2014-07-23 08:48:29

标签: ios core-data nsfetchrequest

我需要从核心数据文件中获取随机对象,例如10个随机对象。

我该怎么做?

这是我的NSFetchRequest设置

- (NSFetchRequest *)fetchRandom
{
if (!_fetchRandom) {
    _fetchRandom = [[NSFetchRequest alloc] init];
}
[_fetchRandom setEntity:[NSEntityDescription entityForName:@"Contacts" inManagedObjectContext:self.oneManagedObjectContext]];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"checked = %@", @"0"];
[_fetchRandom setPredicate:predicate];

NSUInteger count = [self.oneManagedObjectContext countForFetchRequest:_fetchRandom error:NULL];


NSUInteger random = (arc4random() % 5) + 3;

[_fetchRandom setFetchLimit:random];

return _fetchRandom;
}

1 个答案:

答案 0 :(得分:1)

这里没有提取10个随机对象。而是通过将获取限制设置为随机,您将获取随机数量的对象。

要实际获取随机对象,您必须更改谓词。

这样做的一种方法是为实体分配一个属性作为其值 - 比如“sortKey”,在构造数据库时将其唯一地分配给每个对象。

现在获取10个随机值,并在这组10个随机值中使用sortKey将谓词更改为返回对象。

setFetchLimit为10.