如何在Swift中找到正确的路径

Man*_*olo 2 sqlite database-connection ios swift

我从文档中得到了这个代码,我找不到文件的路径,我需要将"contacts.db"文件从Supporting Files文件夹复制到设备中不在模拟器中的应用程序以供离线使用.

func copyItemAtPath(_ srcPath: String,
         toPath dstPath: String,
          error error: NSErrorPointer) -> Bool
Run Code Online (Sandbox Code Playgroud)

srcPath =要移动的文件或目录的路径.此参数不得为零.

dstPath =放置srcPath副本的路径.此路径必须包含新位置中的文件或目录的名称.此参数不得为零.

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

任何帮助都非常感谢.:)

Dha*_*esh 7

您只需将"contacts.db"拖放到Project Navigator中,然后就可以通过这种方式找到该文件的路径:

let sourcePath = NSBundle.mainBundle().pathForResource("contacts", ofType: "db")
Run Code Online (Sandbox Code Playgroud)

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

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

现在你有sourcePath,destinationPath所以你可以将该文件复制到文件夹中:

NSFileManager().copyItemAtPath(sourcePath!, toPath: destinationPath, error: &error)
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 嗨Dharmesh,感谢您的详细回复,我将所有代码复制到delegate.swift,但下面有很多错误.我使用FMDB有问题吗? (2认同)
  • 错误域= NSCocoaErrorDomain代码= 4"操作无法完成.(可可错误4.)"UserInfo = 0x1740ef600 {NSSourceFilePathErrorKey =/private/var/mobile/Containers/Bundle/Application/BCD1A88D-DCAB-4A4D-90F3- B1C0FC99525B/Database-Book.app/contacts.db,NSUserStringVariant =(Copy), (2认同)
  • 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"操作无法完成.没有这样的文件或目录"} (2认同)
  • 我删除了文件,并通过构建阶段添加但同样的错误:(任何建议? (2认同)