有什么方法可以优化数组中的循环吗?我在数组[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/

10-10 20:37