【发布时间】:2014-08-12 19:48:06
【问题描述】:
我正在使用 Swift 中的字典,这些字典需要保存不同类型的值,尽管键几乎都是字符串。这对于 Objective-C 来说非常容易,但 Swift 通常非常有用的类型安全性似乎让这变得更加困难。
我一直在使用 [String: AnyObject] 字典,直到我无法将结果 AnyObject 向下转换为 Swift 字符串,从技术上讲,它不是对象而是值类型。我可以接受它,因为它似乎是有道理的,尽管如果有办法解决它(除了恢复到我不想做的 NSString 对象之外),我想知道它。
上述的逻辑解决方案似乎是切换到使用[String: Any] 字典,但这样做我发现即使是一段基本代码也有问题:
func abc() {
var dict : [String: Any] = [String: Any]()
if dict["success"] != nil {
...
}
}
上面的第 3 行代码给出了错误:
'String' 不能转换为 'DictionaryIndex
'。
现在我似乎有一个字典,其中包含我怀疑我可以根据需要向下转换的类型,但似乎不再可以通过它的键访问,据我所知,它的类型完全正确(实际上,虽然它是文字,但即使错误表明我正在传递一个字符串)。我错过了什么,因为我实际上想要实现的是具有多种类型的易于访问的值的字典,我实际上可以在正确的 Swift 类型的 var/let 中检索这些值?
【问题讨论】:
标签: dictionary swift