【问题标题】:Type 'URL' has no subscript members in Swift 3类型“URL”在 Swift 3 中没有下标成员
【发布时间】:2018-03-24 19:58:10
【问题描述】:

我正在尝试继续使用 swift 1.2 或 2 编写的项目。转换为 Swift 3 的代码出现了一些错误,其中大部分我已经纠正了它们,但我无法弄清楚我在标题。 代码是:

let fileManager = FileManager.default
    let paths = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first
var docs: String = paths![0] as? [String: Any] // Error here

任何建议,我已经检查了许多类似的问题,但似乎没有在这里工作。

【问题讨论】:

    标签: url swift3


    【解决方案1】:

    您调用了first,它获取了数组中的第一个元素。因此[0] 语法是多余的。调用first 或使用[0] 来获取第一项,但不能同时使用两者。

    要么

    let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
    

    或者

    let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
    

    因此,将所有这些放在一起,您可以:

    let fileURL = FileManager.default
        .urls(for: .documentDirectory, in: .userDomainMask)
        .first!
        .appendingPathComponent("Data/userdata.plist")
    

    或者

    let folderURL = FileManager.default
        .urls(for: .documentDirectory, in: .userDomainMask)
        .first!
        .appendingPathComponent("Data")
    
    // create the folder if it doesn't exist
    
    let fileURL = folderURL.appendingPathComponent("userdata.plist")
    
    // now use the `fileURL` here
    

    【讨论】:

    • 但是 OP 仍然试图将生成的 URL 转换为 [String: Any] 并将其存储在 String 中,这没有任何意义。
    • 是的,我正在处理错误消息。但这种演员阵容也是错误的。
    • 我什至没有路径 [0] 也试过,但错误是“无法转换类型 '[String : Any] 的值?”到指定类型'String'"
    • 嗯,这该死的预期。你的代码应该做什么@ToroLoco - 正如我已经说过的:它没有任何意义。
    • 不,此代码从未在任何 Swift 版本中工作过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多