2013-09-17 2 views
0

Я занимаюсь второй частью учебника по основным данным 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»; }

Спасибо!

Рой

+0

Это поможет, если вы действительно связаны с тем, над чем пытаетесь работать. Но, по внешнему виду, ваша база данных не содержит таблицу Z_METADATA, которую потребуют основные данные. Вы не можете просто подключить любую базу данных sqlite к основным данным, которые вы знаете ... – mattyohe

+0

Точно вам нужны таблицы и столбцы, которые Core Data ожидает. – borrrden

ответ

0

Для того, чтобы сделать то, что вы собираетесь сделать, вам придется пройти через таблицу файл SQLite, используя sqlite3 API, вставлять новые объекты ядра данных, заполнить их с данными и сохранить в другой файл , .

+0

Вы должны принять этот ответ. – Mundi

Смежные вопросы