我正在尝试使用代码获取Documents文件夹的路径:

var documentsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory:0,NSSearchPathDomainMask:0,true)

但是Xcode给出了错误:Cannot convert expression's type 'AnyObject[]!' to type 'NSSearchPathDirectory'
我试图了解代码中的错误。

最佳答案

显然,编译器认为NSSearchPathDirectory:0是一个数组,并且当然希望使用NSSearchPathDirectory类型。当然不是有用的错误消息。

但至于原因:

首先,您混淆了参数名称和类型。看一下函数定义:

func NSSearchPathForDirectoriesInDomains(
    directory: NSSearchPathDirectory,
    domainMask: NSSearchPathDomainMask,
    expandTilde: Bool) -> AnyObject[]!
  • directorydomainMask是名称,您使用的是类型,但无论如何都应将它们留给函数使用。它们主要用于方法中。
  • 另外,Swift是强类型的,因此您不应该仅使用0。而应使用枚举的值。
  • 最后,它返回一个数组,而不仅仅是一个路径。

  • 这样就剩下了(已针对Swift 2.0更新):
    let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
    

    对于Swift 3:
    let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
    

    08-19 11:45