Я пишу приложение, в котором хранится огромное количество очень коротких строк (в основном от одного до трех символов Юникода) и множество взаимосвязей.Это приводит к огромным накладным расходам на хранение отношений в формате XML и, тем более, в двоичном формате (что странно).Поэтому, если я использую XML или Binary, я получаю огромные файлы и очень долго сохраняю и загружаю время.
Формат SQLite более компактен и экономит быстрее (особенно в случае небольших изменений), но по какой-то причине запросыиспользование предикатов с форматом «$ Чем-то BEGINSWITH [c] fieldInMyObject» не работает, и я не могу обойтись без них.
Что я могу сделать, чтобы уменьшить объем файлов и ускорить загрузку и сохранение (кроме использования SQLite напрямую)?
С уважением, Тимофей.
UPD Вот код для сохранения данных:
<pre>
‐ (IBAction) saveAction:(id)sender {</p>
<pre><code>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];
}
}
А вот код для загрузки данных (как для создания новых файлов, так и для загрузки существующих):
- (void) panelReturnedURL:(NSURL *)url {
NSManagedObjectModel *mom = [self managedObjectModel];
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel:mom];
NSError *error = nil;
if (![persistentStoreCoordinator addPersistentStoreWithType: NSBinaryStoreType
configuration:nil
URL:url
options:nil
error:&error]) {
[NSApp presentError:error];
}
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator: persistentStoreCoordinator];
[mainWinController window];
}</p>
<p>
И я не сохраняю, когда объекты модифицируются, контекст сохраняется, когда приложениевыходит или когда пользователь явно сохраняет его.