gpt4 book ai didi

iphone - 核心数据: Editing many attributes laggy performance

转载 作者:行者123 更新时间:2023-12-03 21:17:17 26 4
gpt4 key购买 nike

我有一个从 CoreData 获取的 36 行数组。每行都有三个属性:podNumber、pieceNumber 和 colorNumber。

我想要做的是将结果以六组为一组进行洗牌。这样每个 pod 有六 block ,并且这些 block 将为该组进行洗牌。

我能够高效地做到这一点;然而,当我用随机值更新 CoreData 时,性能明显缓慢。我想说完成循环需要 1-1.5 秒。

我尝试了两种方法:1)从 CoreData 中删除旧数组并添加新数组 2)在 CD 中搜索唯一行并更新

我发现第一种方法稍微快一些。有谁知道我如何加快速度?有没有更高效的方法来更新大批量的核心数据。我是否需要将其设置为后台进程以及它将如何工作。

谢谢。乔丹

这是方法一:

//Fetch them all and then delete them all
NSFetchRequest * fetchPieceColors = [[NSFetchRequest alloc] init];
[fetchPieceColors setEntity:[NSEntityDescription entityForName:@"PieceColors" inManagedObjectContext:managedObjectContext]];
[fetchPieceColors setPredicate:[NSPredicate predicateWithFormat:@"(game = %@)",games]];
[fetchPieceColors setIncludesPropertyValues:NO];

NSError * error = nil;
NSArray * pieceColor = [managedObjectContext executeFetchRequest:fetchPieceColors error:&error];
[fetchPieceColors release];
for (NSManagedObject * piece in pieceColor) {
[managedObjectContext deleteObject:piece];
}
NSError *saveError = nil;
[managedObjectContext save:&saveError];



//Add back
for (int b=0;b<6;b++) {
for (int j=0;j<6;j++) {
NSError *error;
NSManagedObject *fetchPieceColors = [NSEntityDescription
insertNewObjectForEntityForName:@"PieceColors"
inManagedObjectContext:managedObjectContext];
[fetchPieceColors setValue:[NSNumber numberWithInt:b] forKey:@"podNumber"];
[fetchPieceColors setValue:[NSNumber numberWithInt:j] forKey:@"pieceNumber"];
[fetchPieceColors setValue:[shuffledArray objectAtIndex:(b*6)+j] forKey:@"colorNumber"];
[fetchPieceColors setValue:games forKey:@"game"];


if (![managedObjectContext save:&error])
{
NSLog(@"Problem saving: %@", [error localizedDescription]);
}
}
}

最佳答案

正如 timthetoolman 指出的那样,击中磁盘的 IO 才是 killer 。您需要做的就是获取内存中的所有数据,进行编辑,然后立即保存所有数据。

Efficiently Importing Data 核心数据编程指南提供了一些关于如何提高性能的有用提示。

关于iphone - 核心数据: Editing many attributes laggy performance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10340925/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com