我正在编写一个应用程序,它存储了大量非常短的字符串(大多数是一到三个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];
}
当修改对象时,我不会保存,当应用程序退出或用户明确保存时保存上下文。
答案 0 :(得分:2)
对于大型文件,XML和二进制文件可能会很慢,因为它们必须在一个块中完全读入内存才能工作。如果你有很多数据,你真的需要使用SQLite存储。
您的谓词问题与SQLite存储无关。常规使用这种类型的谓词。我建议发布一个单独的问题,其中包含您的实体布局和您要使用的谓词: