我的嵌套词典存在问题。
var level1Dictionary = [String : [String : String]]()
var ChosenDeckLabel = [String]
textview.text
我想查看字典是否在我的else if
语句中包含某个值:
else if level1Dictionary[ChosenDeckLabel[textview.text]] != nil {
这会返回错误:
不能使用String类型索引的String类型的下标值!
我应该如何转换它以检查嵌套字典是否包含值?
答案 0 :(得分:2)
默认情况下,词典是选项,因为它们不确定是否存在键/值对。一定要包含你的"!" AND"?"包装和解包传递的数据。
答案 1 :(得分:2)
Arrays通过整数和范围提供下标,如Swift的API所示:
public subscript (index: Int) -> Element
public subscript (subRange: Range<Int>) -> ArraySlice<Element>
您尝试通过抛出错误的字符串下标。您需要获取数组中元素的索引,然后使用它来下标数组以获取值:例如
let dictOfDicts = [String : [String : String]]()
var arrayOfStrings: [String] = ["a", "b", "c"]
let stringToCheck = "a"
dictOfDicts["a"] = ["some": "thing"]
if let index = array.indexOf(stringToCheck) {
if dictOfDicts[array[Int(index)]] != nil {
// do something
}
}
答案 2 :(得分:1)
我认为这是你打算做的事情:
else if level1Dictionary[strIndex1][strIndex2] != nil {
答案 3 :(得分:1)
当你这样做时:
level1Dictionary[ChosenDeckLabel[textview.text]]
您正尝试使用ChosenDeckLabel
下标来访问array
String
:
ChosenDeckLabel[textview.text]
这不是有效的操作。数组被Int
编入索引,而不是字符串索引。