有没有什么办法可以优化数组中的循环?我在数组[arr]中有10,000个对象,所以循环将继续10k倍,我必须在CfgBarCodeMask和CfgBarCodeMaskDetails之间建立关系。大约需要8分钟。如何减少这个时间?循环优化/ CoreData优化
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]];
}
}];
第一步:使用仪器获取的线索关于你的代码的一部分消耗大部分的时间 –
看起来你正在寻找一个“加盟”让核心数据为你做匹配。也许这有助于:http://stackoverflow.com/questions/2458245/iphone-coredata-join –