我想介绍我的核心数据应用程序下载新的sqlite文件并更新其存储数据的功能。请注意,数据模型没有变化。
首先,我并不担心用户对存储数据的更改,只是想覆盖它。
我认为this SO question在回答这些问题时不尽如人意。
感谢您的指导!
答案 0 :(得分:0)
如果要在不修改现有数据库的情况下更新任何数据库文件,则必须按此实现
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[self createEditableCopyOfDatabaseIfNeeded];
}
- (void)createEditableCopyOfDatabaseIfNeeded {
// First, test for existence - we don't want to wipe out a user's DB
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *documentDirectory = [self applicationDocumentsDirectory];
NSString *writableDBPath = [documentDirectory stringByAppendingPathComponent:@"DataBaseName.sqlite"];
BOOL dbexits = [fileManager fileExistsAtPath:writableDBPath];
if (!dbexits) {
// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"DataBaseName.sqlite"];
NSError *error;
BOOL success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
}
答案 1 :(得分:0)
我知道这是一个老问题,但在自己解决这个问题后,我只想补充以下几点:
我的2c,希望它有所帮助。