SQLite数据库缺少一个表

时间:2014-07-15 22:09:44

标签: ios database sqlite

我有以下代码片段,可以在我的测试手机上创建我的.sqlite文件的可写版本:

NSFileManager *fileMgr = [NSFileManager defaultManager];

    // First, test for existence of writable file:
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"pictures.sqlite"];

    BOOL success = [fileMgr fileExistsAtPath:writableDBPath];
    if (!success){
        // The writable database does not exist, so copy the default to the appropriate location.
        NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"pictures.sqlite"];
        success = [fileMgr copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
        if (!success) {
            NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
        }
    }

我在Mac上的pictures.sqlite副本有3个表,是数据库的最新版本。我手机上的.sqlite文件只有2个表,反映了旧版本的数据库。我无法弄清楚如何更新手机以保存新数据库。有人可以帮我这么做吗?

1 个答案:

答案 0 :(得分:1)

启动应用程序时,请检查数据库的版本。 (在这种情况下,检查第三个表是否存在。)

如果太旧,请更新它。 (即,从资源中复制新版本,或手动创建第三个表。)