Swift + 核心数据。从 DB 中获取 N 个随机对象。N << 尺寸(DB)

mr_*_*777 1 core-data ios swift

我正在尝试制作需要从 CoreData 获取 N 个随机对象的应用程序。

问题是数据库大小远远大于我想要获取的对象数量。因此,希望有一种不影响数据库中所有记录的方法。

是否可以在不向数据库中添加额外字段(例如,id)的情况下实现这一点?

我想收到对请求的不同响应,因此“使用某些随机函数预先排序”选项不起作用。

bte*_*pot 5

先统计所有记录:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"<your entity name>"];
NSUInteger count = [context countForFetchRequest:request error:NULL];
Run Code Online (Sandbox Code Playgroud)

使用fetchOffset

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"<your entity name>"];
request.fetchLimit = 1;
request.fetchOffset = arc4random_uniform(count);
NSArray *result = [context executeFetchRequest:request error:NULL];
Run Code Online (Sandbox Code Playgroud)

重复 N 次以获得所需数量的对象。