我需要从核心数据文件中获取随机对象,例如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;
}
答案 0 :(得分:1)
这里没有提取10个随机对象。而是通过将获取限制设置为随机,您将获取随机数量的对象。
要实际获取随机对象,您必须更改谓词。
这样做的一种方法是为实体分配一个属性作为其值 - 比如“sortKey”,在构造数据库时将其唯一地分配给每个对象。
现在获取10个随机值,并在这组10个随机值中使用sortKey将谓词更改为返回对象。
setFetchLimit为10.