为啥不在swift 3中将database.db从bundle复制到文档目录? [复制]

Posted

技术标签:

【中文标题】为啥不在swift 3中将database.db从bundle复制到文档目录? [复制]【英文标题】:Why does not copy database.db from bundle to document directory in swift 3? [duplicate]为什么不在swift 3中将database.db从bundle复制到文档目录? [复制] 【发布时间】:2016-09-28 09:30:46 【问题描述】:

我尝试将我的数据库从捆绑路径复制到目标路径(文档目录)并在 iOS8Swift3Xcode8 final 中使用此代码>:

    let bundlePath = Bundle.main.path(forResource: "cry", ofType: ".db")
    print(bundlePath, "\n") //prints the correct path
    let destPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
    let fileManager = FileManager.default
    let fullDestPath = URL(fileURLWithPath: destPath).appendingPathComponent("cry.db")
    let fullDestPathString = String(describing: fullDestPath)
    if fileManager.fileExists(atPath: fullDestPathString)
        print("Database file is exist")
        print(fileManager.fileExists(atPath: bundlePath!))
    else
        do
            try fileManager.copyItem(atPath: bundlePath!, toPath: fullDestPathString)
        catch
            print("\n")
            print(error)
        
      

但是告诉我这个错误

Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"  

我检查了 atPathtoPath 是对的,但我不知道... 请帮帮我 谢谢你

【问题讨论】:

与***.com/questions/39659939/… 中的错误相同。使用 .path 将 URL 转换为字符串,而不是 String(describing:) atPath 和 toPath 是字符串值。 @MartinR 是的,我知道。这是错误的let fullDestPathString = String(describing: fullDestPath),应该是let fullDestPathString = fullDestPath.path 是的,你是对的。 【参考方案1】:

已解决

    let bundlePath = Bundle.main.path(forResource: "cry", ofType: ".db")
    let destPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
    let fileManager = FileManager.default
    let fullDestPath = URL(fileURLWithPath: destPath).appendingPathComponent("cry.db")
    if fileManager.fileExists(atPath: fullDestPath.path)
        print("Database file is exist")
        print(fileManager.fileExists(atPath: bundlePath!))
    else
        do
            try fileManager.copyItem(atPath: bundlePath!, toPath: fullDestPath.path)
        catch
            print("\n",error)
        
      

我将 .path 添加到我的目标地址,现在可以使用了。

【讨论】:

谢谢你解决了我的问题..

以上是关于为啥不在swift 3中将database.db从bundle复制到文档目录? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能在 Swift 中将对象数组返回给 UIStackView? [复制]

在 Swift 3 中将数据从 JSON 传递到表格视图单元格

textFieldShouldReturn 无法在 swift 3 中将焦点从一个文本字段更改为另一个文本字段

如何在 swift 3 中将图像从服务器加载到 tableView 单元格?

在 Swift 3 中将 JSON 响应从 HTTP 请求传递到另一个 ViewController

如何在没有 segue 的情况下在 Swift 3 中将数据从 VC 传递到另一个?