我正在使用具有枚举大小写值的enum
和tuple
。我无法从 [String: String] 常量中获取值。
我不知道如何修复它,它一定是一个陷阱,但我不知道在哪里,因为 key
肯定是字符串:
enum DictTypes : String {
case settings
case options
case locations
}
enum FileTypes : String {
case json
case pList
}
func getCodebookUrlComponent() -> String
{
var FileSpecs: (
dictType: DictTypes,
fileType: FileTypes,
redownload: Bool
) = (.settings, .json, true)
let codebooks = [
"settings" : "settings",
"options" : "options"
]
let key = self.FileSpecs.dictType // settings or options
if let urlComponent = codebooks[key] {
return urlComponent
}
return ""
}
这行if let urlComponent = codebooks[key]
出现错误:
Ambiguous reference to member 'subscript'
最佳答案
对于这种情况,您应该使用.rawValue
:
if let urlComponent = codebooks[key.rawValue]{
return urlComponent
}
出现此问题的原因是您在此行中的 let key = self.FileSpecs.dictType
收到的 key 是 FileSpecs
类型。并且在 Array
中实现的 subscript
将不符合该值类型。
rawValue
在您的情况下返回您在enum
中分配的字符串值。
关于swift - 从常量 : Ambiguous reference to member 'subscript' 获取值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39617591/