CoreDataに問題がありますが、概念的に間違っていると思います。CoreData - 別のマシンのデータベースにアクセスする際の問題
ネットワーク上のあるマシンのCoreData sqlファイルに別のマシンからアクセスしようとしています。私はクラスターのようなアプリケーションからこれをやろうとしています。各マシンはソフトウェアの同じコピーを持ち、この1台のマシン上のデータベースを指す必要があります。
データベースが稼動しているマシンでモデルとコンテキストが正常に読み込まれます。他のマシンは、コードのビットをここでエラーに私に13400 NSPersistentStoreInvalidTypeError
を与えます:
NSError *error = nil;
NSURL *mdlurl = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:@"OsiriXDB_DataModel" ofType:@"mom"]];
_model = [[NSManagedObjectModel alloc] initWithContentsOfURL: url];
NSURL *dburl = [NSURL URLWithString:[NSString stringWithUTF8String:_DBPath.c_str()]];
// The dburl has a format like: file://192.168.0.2/Users/slate/Documents/OsiriX%20Data/Database.sql which addresses the machine the data sits on.
_storeCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: _model];
_context = [[NSManagedObjectContext alloc] init];
[_context setPersistentStoreCoordinator: _storeCoordinator];
if (![_storeCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:dburl options:nil error:&error]) {
NSLog(@"Error loading store: %@", error); // Error Shows up Here
NSLog(@"MOM: %@",_model); // Model looks OK. Lots of print outs, with the correct names and stuff. (so technical).
}
私はCoreDataについてトンを知らないために告白します。別のマシンにあるからでしょうか?私はthis onlineを読むが、私はと思う。それは私の問題だ。もし私がのファイルがMyApp
またはというディレクトリにあり、データベースを作成したプログラムが見つからないため、修正する方法がわかりません。
CoreDataをネットワーク経由で読み込むのは間違っていますか?
もしそうでなければ、私は何をしていますか?
おかげで、
ああ。それは...吸う。データベースは "database.sql"ファイルです。他のSQLデータベースと同様にアクセスできるはずですか? –
コアデータ生成ファイルのようには聞こえません。コアデータSQLストアには拡張子 '.sqlite'があり、デフォルトではストアを作成したアプリケーションの名前が格納されています。コアデータは汎用SQLファイルを開かず、(文書化されていない)コアデータスキーマで作成されたSQLiteファイルのみを開きます。実際には、これは最初にコアデータによって生成されたストアのみを使用できることを意味します。通常、SQLデータを読み込み、必要に応じてmanagedObjectを作成するだけで、SQLファイルをコアデータストアに変換するための小さな変換アプリケーションを作成するソリューションです。 – TechZen
ありがとうございます。私たちは古いプログラムから "データベース"を取り除き、まったく新しいものに行きます。 –