有什么方法可以优化数组中的循环吗?我在数组[arr]中有10,000个对象,因此循环将继续进行10k次,我必须在CfgBarCodeMask和CfgBarCodeMaskDetails之间建立关系。大约需要8分钟。如何减少这个时间?
NSArray *arr=[coreDataEngine fetchObjectWithEntityName:@"CfgBarCodeMask" withPredicate:nil withSortDescriptor:nil error:nil ];
NSString *predicateString = [NSString stringWithFormat:@"barCodeMaskId == $idVar"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateString];
[arr enumerateObjectsUsingBlock:^(CfgBarCodeMask *barcodeMask, NSUInteger idx, BOOL *stop)
{
NSDictionary *variables = @{ @"idVar" : barcodeMask.id1 };
NSArray *destinationArray=
[coreDataEngine fetchObjectWithEntityName:@"CfgBarCodeMaskDetail"
withPredicate:[predicate predicateWithSubstitutionVariables:variables]
withSortDescriptor:nil error:nil ];
if ([destinationArray count] >0 ) {
[barcodeMask addMaskDetails:[NSSet setWithArray:destinationArray]];
}
}];
最佳答案
您可以使用将循环分成多个批次。每个批处理大约2000个对象,并使用并发NSManagedObjectContext并行执行所有补丁。这是我从另一个数据库迁移60万个对象时所做的。
关于ios - 循环优化/CoreData优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24134089/