Подтвердить что ты не робот

Как импортировать ранее существующий sqlite файл в Core Data?

Мне нужно импортировать файл .sqlite в Core Data, я искал в Интернете и нашел:

Учебное пособие по основным данным: как предварительно загрузить/импортировать существующие данные

Он создает Python script для заполнения этой базы данных путем чтения содержимого нашей старой базы данных и создания соответствующих строк в новой базе данных. Но моя база данных sqlite слишком велика с точки зрения количества таблиц и столбцов, это может стоить значительного количества времени.

Я также нашел это:

Использование предварительно заполненной базы данных SQLite с основными данными на iPhone OS 3.0

Но я не совсем понимаю, похоже, что он копирует старую базу данных в новую, то как она добавляет суффикс Z_ ко всем именам таблиц и столбцов? Кроме того, он просит меня создавать сущности и атрибуты, все равно это можно сделать автоматически (из файла sqlite dabase)?

Спасибо!

4b9b3361

Ответ 2

// Returns the persistent store coordinator for the application.
// If the coordinator doesn't already exist, it is created and the application store added to it.
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (_persistentStoreCoordinator != nil)
    {
        return _persistentStoreCoordinator;
    }

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"yourSqlite.sqlite"];

    NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"yourSqlite.sqlite" ofType:nil];

    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSError *error = nil;

    if  (![[NSFileManager defaultManager] fileExistsAtPath:[documentsDirectory stringByAppendingPathComponent:@"yourSqlite.sqlite"] ]) {

        if([[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:[documentsDirectory stringByAppendingPathComponent:@"yourSqlite.sqlite"] error:&error]){
            NSLog(@"Default file successfully copied over.");
        } else {
            NSLog(@"Error description-%@ \n", [error localizedDescription]);
            NSLog(@"Error reason-%@", [error localizedFailureReason]);
        }
    }

    _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;
}