当我的应用程序启动时,我会检查 Documents 目录中是否存在数据库。如果没有,那么我想将主包中的数据库复制到应用程序的 Documents 目录中。
看起来很简单,但是只有当我在模拟器中运行我的代码时,我才会收到一个可可错误代码 4。可可错误代码表示文件不存在。我已将其范围缩小到很可能是代码中此时不存在 Documents 目录。
这是我的代码:
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *appDBPath = [documentsDirectory stringByAppendingPathComponent:@"app.db"];
if([[NSFileManager defaultManager] fileExistsAtPath:appDBPath]) {
//PERFORM DATA MIGRATIONS IF ANY EXIST
}
else {
NSString *appDBBundlePath = [[NSBundle mainBundle] pathForResource:@"app" ofType:@"db"];
NSError *error;
if(![[NSFileManager defaultManager] copyItemAtPath:appDBBundlePath toPath:appDBPath error:&error]) {
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"ok"
otherButtonTitles:nil];
[alert show];
}
}
我一直认为一旦安装了应用程序,Documents 目录就会存在。我究竟做错了什么?注意:我可以使用物理设备上的应用程序将数据库从捆绑包复制到 Documents 目录。