我的CoreData出现问题,但我确信我在概念上做错了什么。CoreData - 在另一台机器上访问数据库的问题
我想从另一台机器访问我的网络中的一台机器上的CoreData sql文件。我正在尝试从类似群集的应用程序中执行此操作。每台机器都有相同的软件副本,需要指向这台机器上的数据库。
我的模型和上下文正好加载数据库所在的机器。在另一台机器,给了我错误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,但我不认为这是我的问题。如果是这样,我不知道如何解决这个问题,因为我在我的~/Library/Application\ Support/
目录中找不到任何.xml
文件,该目录与MyApp
或OsiriX
(即创建该数据库的程序)有关。
我在做错误的事情来加载网络上的CoreData?
如果不是,我该怎么做?
感谢,
哦。那......太糟糕了。数据库是一个“database.sql”文件。我应该能够访问像任何其他SQL数据库,是吗? –
这听起来不像一个核心数据生成的文件。核心数据SQL商店的扩展名为'.sqlite',默认情况下为创建商店的应用程序的名称。核心数据不会打开任何通用SQL文件,而只会打开使用(未记录的)核心数据模式创建的SQLite文件。实际上,这意味着您只能首先使用Core Data生成的商店。通常解决方案是编写一个小型转换应用程序,通过简单读取SQL数据并根据需要创建managedObjects,将SQL文件转换为Core Data存储。 – TechZen
谢谢。我们将从旧程序中删除“数据库”,并使用全新的东西。 –