gpt4 book ai didi

core-data - NSFetchedResultsController 是否一次获取所有结果?

转载 作者:行者123 更新时间:2023-12-02 03:28:25 26 4
gpt4 key购买 nike

我在 Core Data 中有大量对象。以下是否仅在需要时加载 UI 所需的内容,还是预先加载所有对象?

NSFetchedResultsController 确实有一个 fetchedObjects属性(property)..这是否意味着它可以预先获取所有内容?解决这个问题的正确方法是什么?

    NSManagedObjectContext *context = # get from somewhere
NSManagedObjectModel *model = context.persistentStoreCoordinator.managedObjectModel;
NSDictionary *vars = @{...};
NSFetchRequest *fetchRequest = [model fetchRequestFromTemplateWithName:@"..."
substitutionVariables:vars];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"..." ascending:NO];
NSArray *sortDescriptors = @[sortDescriptor];
fetchRequest.sortDescriptors = sortDescriptors;


NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
initWithFetchRequest:request
managedObjectContext:context
sectionNameKeyPath:nil
cacheName:@".."];

最佳答案

您通常不应该使用 fetchedObjects .它始终是已获取对象的完整列表,其中一些可能在内存中,而另一些可能是错误的。

重点是您希望 FRC 仅根据需要加载数据(到故障对象)。但是,要做到这一点,您需要根据您的 UI 在任何时候可以显示的内容(可以同时显示在屏幕上的最大项目数)告诉它加载多少。

为此,您需要设置 fetchBatchSizeNSFetchRequest .完成后,FRC 将根据需要(当您的 UI 滚动并向 FRC 发出新的数据请求时)加载一个新的结果“页面”(到内存中)。

从技术上讲,执行此操作的不是 FRC,而是由 fetch 返回的数组对象,它最初包含“空”对象,并根据需要透明地对对象批次进行错误处理。

关于core-data - NSFetchedResultsController 是否一次获取所有结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28928114/

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