我有以下代码片段,可以在我的测试手机上创建我的.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个表,反映了旧版本的数据库。我无法弄清楚如何更新手机以保存新数据库。有人可以帮我这么做吗?
答案 0 :(得分:1)
启动应用程序时,请检查数据库的版本。 (在这种情况下,检查第三个表是否存在。)
如果太旧,请更新它。 (即,从资源中复制新版本,或手动创建第三个表。)