xcode – 对于使用Core Data的几个不同的提取重用NSFetchRequest
发布时间:2020-12-14 17:49:48 所属栏目:百科 来源:网络整理
导读:我的问题: 对于使用Core Data的几个不同的提取重用NSFetchRequest有什么不好吗? 示例代码: NSFetchRequest *request = [[NSFetchRequest alloc] init];NSEntityDescription *logEntity = [NSEntityDescription entityForName:@"LogEntry" inManagedObject
我的问题:
对于使用Core Data的几个不同的提取重用NSFetchRequest有什么不好吗? 示例代码: 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()块中并静态存储它们;或者在构造函数中并存储在对象字段中 如果你愿意,我可以给你一些示例代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |