在Swift中,fileExistsAtPath(_ path:String,isDirectory isDirectory:UnsafeMutablePointer <ObjCBool​​>) - > Bool仅接受单个参数

Geo*_*rev 28 ios swift

以下示例中的方法fileExistsAtPath()仅接受单个参数.

if fm.fileExistsAtPath(result, isDirectory:&isDir) {
Run Code Online (Sandbox Code Playgroud)

确切的错误消息是:"调用中的额外参数'isDirectory'.

知道什么是错的吗?

Kir*_*ins 62

问题是,isDirectoryUnsafeMutablePointer<ObjCBool>,而不是UnsafeMutablePointer<Bool>你提供.您可以使用以下代码:

var isDir = ObjCBool(false)
if NSFileManager.defaultManager().fileExistsAtPath("", isDirectory: &isDir) {

}

if isDir.boolValue {

}
Run Code Online (Sandbox Code Playgroud)

  • 在Swift 3 Bool(isDir)不适合我.isDir.boolValue工作正常.谢谢 (7认同)
  • 这是Swift 3的解决方案 (3认同)

Ian*_*hek 20

有些人可能觉得这有点整洁.这是Swift 3.

var directory: ObjCBool = ObjCBool(false)
var exists: Bool = FileManager.default.fileExists(atPath: "…", isDirectory: &directory)

if exists && directory.boolValue {
    // Exists. Directory.
} else if exists {
    // Exists.
}
Run Code Online (Sandbox Code Playgroud)

  • 从技术上讲,这不是强制转换,而是使用`init <T:BooleanType>(_ value:T)`进行初始化. (2认同)