Я занимаюсь второй частью учебника по основным данным Ray Wenderlich. Вместо чтения файла, который содержит данные по умолчанию, я пытаюсь прочитать фактический файл данных Failed Bank, который был создан в его учебнике по SQLite3. Программа бросает исключение, когда я пытаюсь создать Store и открыть файл.Доступ к файлу sqlite3 с базовыми данными
Вот фрагмент кода
- (NSPersistentStoreCoordinator *) persistentStoreCoordinator
{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"banklist.sqlite3"];
if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURL path]]) {
NSURL *preloadURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"banklist" ofType:@"sqlite3"]];
NSError *err = nil;
if (![[NSFileManager defaultManager] copyItemAtURL:preloadURL toURL:storeURL error:&err]) {
NSLog(@"Opps, couldn't copy preloaded data");
}
}
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;
}
Здесь исключение:
2013-09-16 20: 19: 57,549 FailedBankCD [4086: с07] CoreData: ошибка: (1) Ошибка ввода-вывода для базы данных в/Users/artletter1/Библиотека/Поддержка приложений/iPhone Simulator/6.1/Приложения/524B84E3-94D6-40A3-8847-DD15A99B22A2/Documents/banklist.sqlite3. Код ошибки SQLite: 1, «нет такой таблицы: Z_METADATA» 2013-09-16 20: 19: 57.552 FailedBankCD [4086: c07] Неразрешенная ошибка Ошибка домена = NSCocoaErrorDomain Code = 256 «Операция не может быть выполнена. (Cocoa ошибка 256.) «UserInfo = 0x854b560 {NSUnderlyingException = ошибка ввода-вывода для базы данных в/Users/artletter1/Библиотека/Поддержка приложений/iPhone Simulator/6.1/Приложения/524B84E3-94D6-40A3-8847-DD15A99B22A2/Documents/banklist.sqlite3 , Код ошибки SQLite: 1, «нет такой таблицы: Z_METADATA», NSSQLiteErrorDomain = 1}, { NSSQLiteErrorDomain = 1; NSUnderlyingException = "Ошибка ввода-вывода для базы данных в/Пользователи/artletter1/Библиотека/Поддержка приложений/Симулятор iPhone/6.1/Приложения/524B84E3-94D6-40A3-8847-DD15A99B22A2/Documents/banklist.sqlite3. Код ошибки SQLite: 1, «нет такой таблицы: Z_METADATA»; }
Спасибо!
Рой
Это поможет, если вы действительно связаны с тем, над чем пытаетесь работать. Но, по внешнему виду, ваша база данных не содержит таблицу Z_METADATA, которую потребуют основные данные. Вы не можете просто подключить любую базу данных sqlite к основным данным, которые вы знаете ... – mattyohe
Точно вам нужны таблицы и столбцы, которые Core Data ожидает. – borrrden