gpt4 book ai didi

objective-c - 批处理核心数据获取结果

转载 作者:可可西里 更新时间:2023-11-01 03:31:23 24 4
gpt4 key购买 nike

我正在执行一个返回大约 2000 个实体的获取请求。目前,这在我的设备上大约需要 20 秒。所以我想我可以将获取限制设置为 100,然后当用户滚动到 TableView 的末尾时,获取接下来的 100 个实体。这可以使用 NSFetchRequest 的 setFetchLimitsetFetchOffset 来完成。

但是,我想不通的是,如果在我第二次提取对象 101-200 时,对象 1-100 会发生什么情况?我是否必须为每 100 个项目使用单独的 NSFetchedResultsController,然后将我的 TableView 数据源方法配置为基于多个获取结果 Controller 进行查询?或者我能否以某种方式使用相同的 NSFetchedResultsController 以某种方式一次获取 100 个实体,但在每次后续获取时,只需将接下来的 100 个项目添加到原始的 100 个项目中?

编辑:这是我的代码:

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

NSEntityDescription *entity = [NSEntityDescription
entityForName:@"MessageObject" inManagedObjectContext:appDelegate.managedObjectContext];

[fetchRequest setEntity:entity];
NSPredicate *predicate= [NSPredicate predicateWithFormat:@"ANY tags.tagName==%@", currentTagObject.tagName];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sort= [[NSSortDescriptor alloc] initWithKey:@"createDate" ascending:NO selector:@selector(compare:)];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:5];

最佳答案

您实际上不需要做任何事情来实现您指定大小的批量提取。您将获得您所描述的行为,只需在单个 Controller 上执行单个获取请求 - 通过设置批量大小属性,您只是向 CoreData 提示您根据自己的考虑认为最佳批量大小。 CoreData 将处理按您需要指定大小的连续批处理获取对象 - 并且在需要内存消耗时它将对托管对象进行故障处理。

关于objective-c - 批处理核心数据获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11165348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com