CoreData - проблема с доступом к базе данных на другом компьютере - PullRequest
0 голосов
/ 02 марта 2011

У меня проблема с моими 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. Это потому что это на другой машине? Я читаю это онлайн , но я не думаю, что это моя проблема. Если это так, я понятия не имею, как это исправить, потому что я не могу найти файлы .xml в моем каталоге ~/Library/Application\ Support/, относящиеся либо к MyApp, либо к OsiriX, то есть программе, создавшей базу данных.

Неправильно ли я загружаю CoreData по сети?
Если нет, что мне делать?

Спасибо

1 Ответ

1 голос
/ 03 марта 2011

Ошибка указывает, что координатор постоянного хранилища считает, что файл имеет неправильный формат для NSSQLiteStoreType.Это говорит о том, что файл был найден.Если он не может найти файл или получить доступ к каталогу, вы получите еще одну ошибку.

Я не уверен, в чем конкретно заключается ваша проблема, но в целом могу вам сказать, что Core Data не предназначена для одновременной базы данных.Это даже не база данных вообще.На самом деле это система управления графами объектов во время выполнения, предназначенная для управления слоем модели приложения с сохранением привязки в качестве опции.Не существует опций Core Data для управления несколькими экземплярами приложения, одновременно обращающегося к одному и тому же магазину.Вы можете сделать это, установив хранилище только для чтения, но я точно не знаю.

Похоже, вам нужна настоящая база данных, работающая на вашем сервере.

...