エンティティ "Word"はinputSoundとoutputSoundの2つのプロパティですが、どちらも小さく、約10KBのオーディオファイルですが、4000個のインスタンスが存在します私のSQLデータベースで。コアデータと10 000オーディオファイル
まず、SQLにバイナリデータとして格納しようとしましたが、かなり遅くなりました。 これで「外部レコードファイルに保存」オプションが見つかりました。これが私に役立つかどうか、またはエンティティプロパティのオーディオファイルにURLを保存するほうがよいかどうか尋ねたいと思っていますか?
最初の方が良ければ、最初の起動時に、既存のストアをBundleからドキュメントディレクトリに移動するにはどうすればよいですか?
私はちょうどSQLに対処しています(私のアプリの開発者のところで私にはあらかじめ紹介されています)。しかし、これはどうすればいいですか?そして、バックグラウンドで何とかして最初のより速く、よりユーザーフレンドリーな起動?
これは推奨される方法があると思われる(それらの「多く」のあなたのケースにも適用することができますが、特に大規模なもの)私は今、バイナリの場合
- (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;
}
あなたはWWDC 11とは異なることを話しています。セッション303 - iOSのコアデータの新機能私は今朝それを見て、「外部記録ファイルに保存」オプションを見つけました。それは私の方法ではないと思います? –
あなたにはうまくいくかもしれませんが、iOS 4以前のバージョンをサポートする必要がある場合は、「新機能」の機能に注意する必要があります。パスを保存し、自分自身を取得/削除する方法は、iOS2に至るまで働いています:) –
私はiOS5のみをサポートします) –