我正在try 使用代码获取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]

Ios相关问答推荐

SWIFT AVFoundation翻转相机功能不起作用

UIAlertController的空子类是否可以与`appearance(whenContainedInInstancesOf:)`一起安全使用

GraphQL iOS Apollo客户端自动持久化查询导致崩溃

不可发送类型 '[String : Any]?'在调用非隔离实例方法 XXX 时退出主参与者隔离上下文不能跨越参与者边界

NSOperation 有延迟 - 它是异步的还是同步的?

如何仅更改一个视图的导航标题 colored颜色 ?

在 Swift 中合并子数组

将 SwiftUI 与 @AppStorage 和动态函数调用一起使用

如何在 Swift 中使用包含多个值的查询参数构建一个 URL?

interfaceOrientation在 iOS 8 中已弃用,如何更改此方法 Objective C

使用 convertPoint 获取父 UIView 内的相对位置

Xcode 4 + iOS 4.3:存档类型不存在打包程序

SwiftUI NavigationView navigationBarTitle LayoutConstraints 问题

将自定义对象保存到 NSUserDefaults

如何用 CAShapeLayer 和 UIBezierPath 画一个光滑的圆?

使用 Swift 在一个 ViewController 中强制横向模式

iOS 7 及更高版本: for each 视图控制器设置状态栏样式

Objective-C 将 NSDate 设置为当前 UTC

用 NavigationViewController 快速呈现 ViewController

使用 swift 3 在 UIView 上添加阴影