我的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
謝謝。我們將從舊程序中刪除「數據庫」,並使用全新的東西。 –