Swift Dictionary 通过下标访问值抛出错误

标签 swift dictionary collections

访问 Swift Dictionary通过下标语法的值给出错误 Ambiguous reference to member 'subscript'

这是代码

class Model {

    struct Keys {
        static let type :String = "type" //RowType
        static let details :String = "details"
    }

    var type :RowType = .None
    var details :[Detail] = []

    init(with dictionary:Dictionary<String, Any>) {

        if let type = dictionary[Keys.type] as? String {
            self.type = self.rowTypeFromString(type: type)
        }

        if let detailsObj = dictionary[Keys.details] as? Array { //Error : Ambiguous reference to member 'subscript'


       }
    }

}

如果我删除类型转换 as? Array在可选绑定(bind)结束时,它可以正常编译

我期待 details 的值关键是 Array ,我知道我可以使用[String,Any]而不是Dictionary<Key, Value> ,是什么导致了这个问题?

最佳答案

数组不像 NSArray 那样工作,您明确需要告诉数组存储的类型。

如果你想存储Detail其中的对象,正确的语法是 Array<Detail>或者简单地[Detail]

if let detailsObj = dictionary[Keys.details] as? Array<Detail> {

}

关于Swift Dictionary 通过下标访问值抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44327624/

相关文章:

java - 按对象分组 - Java 流

ios - Cosmic mind - 如何更改标题栏按钮的色调

swift - 需要调整 NSJSONSerialization 到 iOS10

iOS 在 Storyboard上添加设计时文本

dictionary - IPython 中字典的并行化函数

python - 根据字典中的值对字符串列表进行排序

ios - 在 iOS 8.3 上使用 CoreSpotlight (9.0+) 启动应用程序时 Xcode 崩溃

python - Python中的过滤操作

java - Java中堆栈行为的最佳类是什么

java - Collections.sort 创建重复项?