У меня есть сущность "Word", и в ней есть два свойства - inputSound и outputSound, оба они маленькие, около 10 КБ аудиофайлов, но в моей базе данных SQL будет 4000 экземпляров этой сущности.
Сначала я попытался сохранить их в виде двоичных данных в моем SQL, и это сделало его довольно медленным.
Итак, я нашел опцию «Сохранить во внешнем файле записи» и хочу спросить, поможет ли это мне, или мне лучше просто сохранить URL-адрес аудиофайла в свойстве объекта?
Если первое лучше, как мне переместить мой постоянный магазин из Bundle в каталог документов при первом запуске?
Прямо сейчас я просто справляюсь с SQL (он предварительно заполнен мной в части моего приложения для разработчика), но как мне сделать это с таким количеством файлов? И могу ли я сделать это как-то в backgrouns, чтобы сделать мой первый запуск быстрее и удобнее?
Вот как я это делаю сейчас
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (__persistentStoreCoordinator != nil)
return __persistentStoreCoordinator;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString *defaultStore = [documentsDirectory stringByAppendingPathComponent:@"Easy10.sqlite"];
NSString *sqliteInBundle = [[[NSBundle mainBundle] pathForResource:@"Easy10" ofType:@"sqlite"]stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Easy10.sqlite"];
NSError *error =nil;
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:defaultStore])
[fileManager copyItemAtPath:sqliteInBundle toPath:defaultStore error:&error];
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error];
return __persistentStoreCoordinator;
}