【问题标题】:What happened to FSMountServerVolumeSync in Swift?Swift 中的 FSMountServerVolumeSync 发生了什么?
【发布时间】:2015-03-14 07:04:17
【问题描述】:

我正在尝试找到一种在我正在创建的 Cocoa 应用程序中挂载 SMB 共享的方法,但是所有文档都指向 FSMountServerVolumeSync 但是当我将其放入我的代码中时出现错误

“FSMountServerVolumeSync”不可用:从 OS X 10.9 及更早版本开始弃用的 API 在 Swift 中不可用

我发现了一些关于旧替代品的信息 - DADiskMount,但我不知道这是否是合适的替代品,也不知道如何实施。

现在是否有一种 Swift 方法来挂载适用于最新版本 Swift 的 SMB 共享?

【问题讨论】:

  • 根据documentation,您应该使用 NetFSMountURLAsync。还有 NetFSMountURLSync。
  • 我也看到了 Martin 然而,即使是 Apple 自己也没有任何关于 NetFSMountURLAsync 的信息,尽管它看起来像是在 10.6 中引入的,但你确实让我更深入地了解了它,并且我已将 NetFS 包含到我的项目中,现在我至少可以看到并添加正确的功能,所以谢谢你。现在我可以玩弄它了。

标签: cocoa swift xcode6 osx-yosemite


【解决方案1】:

因此,对于任何寻找此问题答案的人来说,Apple 似乎没有提供有关此问题的文档,但经过大量搜索后,我发现 NetFS.framework 仍然非常有效并希望得到支持。

一旦我将 NetFS 框架包含到 Swift 文件中并试玩了一下,一切都按预期工作。

include Coco
include NetFS    

func mountShare( serverAddress: String, shareName: String, userName: String, password: String) {
    let fm = NSFileManager.defaultManager()
    let mountPoint = "/Volumes/".stringByAppendingString(shareName)
    var isDir : ObjCBool = false
    if fm.fileExistsAtPath(mountPoint, isDirectory:&isDir) {
        if isDir {
            unmount(mountPoint, 0)
            println("unmount \(mountPoint)")
        }
    }
    let sharePath = NSURL(string: "\(serverAddress)/\(shareName)")!
    let mounted: Int32 = NetFSMountURLSync(sharePath, nil, userName, self.decodeStr(password), nil, nil, nil)
    if mounted > 0 {
        println("Error: sharePath: \(sharePath) Not Valid")
    } else {
        println("Mounted: \(sharePath)")
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2016-02-28
    • 2014-02-28
    相关资源
    最近更新 更多