Xcode命令行工具将sqlite转换为使用nill数据返回的coredata

时间:2015-07-07 12:54:53

标签: ios objective-c xcode core-data sqlite

我正在尝试使用命令行工具将sqlite转换为coredata。问题是使用nil数据创建的核心数据文件.sqlite中的数据不会复制到coredata中。我按照http://www.raywenderlich.com/12170/core-data-tutorial-how-to-preloadimport-existing-data-updated教程。

我使用命令行工具在OSX中创建了一个项目我在此项目中添加了datamodel .xcdatamodel文件和实体文件,之后我在project-> Targets-> BuildPhases-> Copyfiles中添加了mydata.sqlite文件。

我的主人。

static NSManagedObjectModel *managedObjectModel()
{
    static NSManagedObjectModel *model = nil;
    if (model != nil) {
        return model;
    }

    NSString *path = @"myDataModel";
    NSURL *modelURL = [NSURL fileURLWithPath:[path stringByAppendingPathExtension:@"mom"]];
    model = [[NSManagedObjectModel alloc]  initWithContentsOfURL:modelURL];

    return model;
}

static NSManagedObjectContext *managedObjectContext()
{
    static NSManagedObjectContext *context = nil;
    if (context != nil) {
        return context;
    }

    @autoreleasepool {
        context = [[NSManagedObjectContext alloc] init];

        NSPersistentStoreCoordinator *coordinator =       [[NSPersistentStoreCoordinator alloc]  initWithManagedObjectModel:managedObjectModel()];
        [context setPersistentStoreCoordinator:coordinator];

        NSString *STORE_TYPE = NSSQLiteStoreType;

        NSString *path = [[NSProcessInfo processInfo] arguments][0];
        path = [path stringByDeletingPathExtension];
        NSURL *url = [NSURL fileURLWithPath:[path stringByAppendingPathExtension:@"sqlite"]];

        NSError *error;
        //NOTE NSSQLitePragmasOption
        NSDictionary *options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };
        NSPersistentStore *newStore = [coordinator addPersistentStoreWithType:STORE_TYPE configuration:nil URL:url options:options error:&error];

        if (newStore == nil) {
            NSLog(@"Store Configuration Failure %@", ([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");
        }
    }
    return context;
}

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        // Create the managed object context
        NSManagedObjectContext *context = managedObjectContext();

        // Custom code here...
        // Save the managed object context
        NSError *error = nil;
        if (![context save:&error]) {
            NSLog(@"Error while saving %@", ([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");
            exit(1);
        }
    }
}

sqlite转换为coredata但数据映射没有完成。创建的coredata文件使用nill数据。任何人都可以帮我解决这个问题。谢谢

0 个答案:

没有答案