1

当我的应用程序启动时,我会检查 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 目录。

4

0 回答 0