Оказывается, хранилище БД sqlite построено неправильно.Таким образом, в данном случае сообщение было довольно точным.
Вышеуказанная проблема была реальной.База данных не отражала модель.
Решение состоит в том, чтобы позволить Core Data создать пустую базу данных из модели, а затем Core Data импортировать сами данные.
Сначала я экспортировал свойБаза данных sqlite в sql вызывает файл db.sql (образно!).Я экспортировал только таблицу данных и таблицу первичного ключа, а не таблицу метаданных.Я использовал приложение под названием SQLiteManager для этого.Вы также можете сделать это в командной строке.
Весь код является стандартным, за исключением обработки контроллера постоянного хранилища.
Этот код выглядит следующим образом:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator_ != nil) {
return persistentStoreCoordinator_;
}
NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"db.sql"];
// set up the backing store
NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn't exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath]) {
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"dict" ofType:@"sqlite"];
if (defaultStorePath) {
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
}
}
NSURL *storeURL = [NSURL fileURLWithPath:storePath];
NSError *error = nil;
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return persistentStoreCoordinator_;
}
Надеюсь, это поможет .. Кажется, у меня работает ..