【问题标题】:How to find a correct path in Swift如何在 Swift 中找到正确的路径
【发布时间】:2015-05-12 07:19:40
【问题描述】:

我从文档中获得此代码,我找不到文件的路径,我需要将“contacts.db”文件从支持文件文件夹复制到设备中的应用程序而不是模拟器中以供离线使用.

func copyItemAtPath(_ srcPath: String,
         toPath dstPath: String,
          error error: NSErrorPointer) -> Bool

srcPath = 要移动的文件或目录的路径。此参数不能为 nil。

dstPath = 放置 srcPath 副本的路径。此路径必须在其新位置包含文件或目录的名称。此参数不能为 nil。

error = 在输入时,指向错误对象的指针。如果发生错误,则此指针设置为包含错误信息的实际错误对象。如果您不想要错误信息,您可以为此参数指定 nil。

非常感谢任何帮助。 :)

【问题讨论】:

    标签: ios sqlite swift database-connection


    【解决方案1】:

    您可以将“contacts.db”拖放到 Project Navigator 中,然后您可以通过以下方式找到该文件的路径:

    let sourcePath = NSBundle.mainBundle().pathForResource("contacts", ofType: "db")
    

    之后,您可以将该文件复制到应用程序的文件夹中,为此您需要该文件夹路径:

    let doumentDirectoryPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as! String
    let destinationPath = doumentDirectoryPath.stringByAppendingPathComponent("contacts1.db")
    

    现在您有了sourcePathdestinationPath,因此您可以将该文件复制到文件夹中:

    NSFileManager().copyItemAtPath(sourcePath!, toPath: destinationPath, error: &error)
    

    如果你想检查错误,你可以这样做:

    var error : NSError?
        NSFileManager().copyItemAtPath(sourcePath!, toPath: destinationPath, error: &error)
        if let error = error {
            println(error.description)
        }
    

    如果你得到你的sourcePath nil 然后转到 Targets->YouApp->Build Phases->copy Bundle Resources 并在那里添加你的文件。 希望这会有所帮助。

    【讨论】:

    • 您好 Dharmesh,感谢您的详细回复,我将您的所有代码复制到了 delegate.swift,但下面出现了很多错误。我用FMDB有问题吗?
    • Error Domain=NSCocoaErrorDomain Code=4 "操作无法完成。(Cocoa 错误 4.)" UserInfo=0x1740ef600 {NSSourceFilePathErrorKey=/private/var/mobile/Containers/Bundle/Application/ BCD1A88D-DCAB-4A4D-90F3-B1C0FC99525B/Database-Book.app/contacts.db,NSUserStringVariant=(复制),
    • NSDestinationFilePath=/var/mobile/Containers/Data/Application/B8079789-BEE7-4C3A-A980-C794B05454B6/Documents/contacts.db, NSFilePath=/private/var/mobile/Containers/Bundle/ Application/BCD1A88D-DCAB-4A4D-90F3-B1C0FC99525B/Database-Book.app/contacts.db, NSUnderlyingError=0x174059170 "操作无法完成。没有这样的文件或目录"}
    • 我删除了文件,并通过构建阶段添加但同样的错误:(有什么建议吗?
    猜你喜欢
    • 2021-10-19
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多