有沒有什麼辦法可以優化數組中的循環?我在數組[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 –