CoreData - 如何创建 fetchrequest 以获取随机属性值数组
Posted
技术标签:
【中文标题】CoreData - 如何创建 fetchrequest 以获取随机属性值数组【英文标题】:CoreData - how to create fetchrequest to get array of random attribute values 【发布时间】:2011-10-02 12:49:59 【问题描述】:我有 2 个实体 House 和 Flat 的简单模型。 House 与 Flat 有很多关系。 Flat 具有 number 和 description 等属性。
我想得到一个随机八个平面数字的列表。
我正试着走这条路,但似乎错了
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"House" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
NSArray *houses = [aFetchedResultsController fetchedObjects];
那我需要得到合适的值。
请告诉我正确的方法。
我试着回答自己。也许我的大脑是干的:) 只需要
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Flat" inManagedObjectContext:self.managedObjectContext];
然后使用获取的对象数组。但我坚信有更优雅的解决方案。
我还有关于第一个问题的问题。 如果单位数量约为 10000,如何获取随机对象?一般来说,它可以工作,但速度明显减慢。
【问题讨论】:
【参考方案1】:Limit 对记录进行随机排序并设置[fetchRequest setFetchLimit:8];
以获得前八名。对于随机排序,请使用随机返回 NSComparisonResult
的选择器或比较器创建 NSSortDescriptor
,并将此描述符添加到获取请求中。
【讨论】:
感谢您的回答。但你的意思是 [fetchRequest setFetchLimits:8] 糟糕!是的,我的意思是setFetchLimit:
以上是关于CoreData - 如何创建 fetchrequest 以获取随机属性值数组的主要内容,如果未能解决你的问题,请参考以下文章
在 SwiftUI 中将 @FetchRequest 与 Core Data 一起使用时修改 nil 排序行为