gpt4 book ai didi

xcode - 将NSFetchRequest重用到Core Data进行几种不同的提取是否有不好的事情?

转载 作者:行者123 更新时间:2023-12-04 14:32:37 25 4
gpt4 key购买 nike

我的问题:
NSFetchRequest重复用于Core Data的几种不同提取是否有不好的事情?

示例代码:

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

NSEntityDescription *logEntity = [NSEntityDescription entityForName:@"LogEntry" inManagedObjectContext:context];
[request setEntity:logEntity];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"dateTimeAction" ascending:NO]; // ascending NO = start with latest date
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"status == %@",@"op tijd"];
[request setPredicate:predicate];
[request setFetchLimit:50];

NSError *error = nil;
NSInteger onTimeCount = [context countForFetchRequest:request error:&error];

NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"status == %@",@"uitgesteld"];
[request setPredicate:predicate1];
[request setFetchLimit:50];

NSInteger postponedCount = [context countForFetchRequest:request error:&error];

NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"status == %@",@"gemist"];
[request setPredicate:predicate2];
[request setFetchLimit:50];

NSInteger missedCount = [context countForFetchRequest:request error:&error];

最佳答案

这不是问题,但是在给出的示例中,它并不能给您带来太多好处(只是为了简化代码)。创建访存请求中最昂贵的部分是解析谓词格式字符串。

如果您给定的代码经常被调用,并且您希望加快速度,那么可以尝试以下一些方法:

  • 只创建一次所有谓词和获取请求:也许在dispatch_once()块中并静态存储它们;或在构造函数中并存储在对象字段
  • 不要指定排序描述符,因为顺序只在乎
  • 无关紧要
  • 如果实际谓词比显示的更为复杂或灵活,请创建一个具有替换变量的常规模板谓词,然后使用predicateWithSubstitutionVariables:生成指定的副本。
  • 为了简化代码,请使用模型编辑器在对象模型中定义该模板,然后使用fetchRequestFromTemplateWithName:substitutionVariables:创建获取请求。

  • 如果您愿意,我可以提供一些示例代码。

    关于xcode - 将NSFetchRequest重用到Core Data进行几种不同的提取是否有不好的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673982/

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