核心数据,巨大的文件,慢

时间:2011-03-22 07:48:20

标签: core-data filesize

我正在编写一个应用程序,它存储了大量非常短的字符串(大多数是一到三个unicode字符)和很多关系。这导致以XML格式存储关系的大量开销,以及二进制格式(这很奇怪)。因此,如果我使用XML或二进制文件,我会获得大量文件以及很长的保存和加载时间。

SQLite格式更紧凑,保存更快(特别是在变化较小的情况下),但由于某种原因,使用格式为“$ something BEGINSWITH [c] fieldInMyObject”的谓词的查询不起作用,我不能这样做没有他们。

我能做些什么来减少文件的数量并加快加载和保存(除了直接使用SQLite)?

祝你好运, 提莫菲。

UPD 的 以下是保存数据的代码:

‐ (IBAction) saveAction:(id)sender {

NSError *error = nil;

if (![[self managedObjectContext] commitEditing]) {
    NSLog(@"%@:%s unable to commit editing before saving", [self class], _cmd);
}

if (![[self managedObjectContext] save:&error]) {
    [[NSApplication sharedApplication] presentError:error];
}

}

以下是加载数据的代码(用于创建新文件和加载现有文件): NSError *error = nil; if (![[self managedObjectContext] commitEditing]) { NSLog(@"%@:%s unable to commit editing before saving", [self class], _cmd); } if (![[self managedObjectContext] save:&error]) { [[NSApplication sharedApplication] presentError:error]; }

当修改对象时,我不会保存,当应用程序退出或用户明确保存时保存上下文。

1 个答案:

答案 0 :(得分:2)

对于大型文件,XML和二进制文件可能会很慢,因为它们必须在一个块中完全读入内存才能工作。如果你有很多数据,你真的需要使用SQLite存储。

您的谓词问题与SQLite存储无关。常规使用这种类型的谓词。我建议发布一个单独的问题,其中包含您的实体布局和您要使用的谓词: