【发布时间】:2014-10-26 23:35:45
【问题描述】:
我是 iOS 开发的新手,我正在对使用 Sqlite 的应用程序进行更改。我要在一些表中添加一些新字段,我用软件浏览了数据库并在其中添加了新字段 inventory_db_src.sqlite 但是当我在模拟器中看到它使用 inventory_db.sqlite 这很奇怪,因为解决方案中没有 inventory_db.sqlite 文件,也没有通过 SQL 脚本创建数据库的代码。如果我调试代码,它会成功获得 inventory_db.sqlite 路径,并且永远不会执行 inventory_db_src.sqlite 行并将inventory_db.sqlite 放入我的新字段不存在的模拟器中这些在 inventory_db_src.sqlite 中。请帮帮我
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dbPath = [documentsDirectory stringByAppendingPathComponent:@"inventory_db.sqlite"];
// [fileManager removeItemAtPath:dbPath error:nil];
success = [fileManager fileExistsAtPath:dbPath];
success = NO;
if (success) {
int savedVersion = [[NSUserDefaults standardUserDefaults] integerForKey:kVERSION_KEY];
if (kCURRENT_DB_VERSION != savedVersion) {
[fileManager removeItemAtPath:dbPath error:nil];
success = NO;
}
}
if (!success) {
// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"inventory_db_src.sqlite"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];
if (!success) {
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
_INVENTORY_DB = [[FMDatabase alloc] initWithPath:dbPath];
【问题讨论】:
标签: ios objective-c iphone sqlite ipad