2016-08-11 3 views
1

У меня проблема с моим вложенным словарем.Как проверить значение внутри вложенного словаря swift

var level1Dictionary = [String : [String : String]]() 
var ChosenDeckLabel = [String] 
textview.text 

Я хочу видеть, если словарь содержит определенное значение в моей, else if заявление как таковое:

else if level1Dictionary[ChosenDeckLabel[textview.text]] != nil { 

это возвращает ошибку:

Cannot subscript value of type String with an index of type String!

Как я должен бросить его проверить, содержит ли вложенный словарь значение?

+0

Где ошибка? Можете ли вы дать нам пример ввода данных и ожидаемый результат? – Alexander

ответ

1

Я думаю, что это то, что вы собираетесь делать:

else if level1Dictionary[strIndex1][strIndex2] != nil {

+0

Ха-ха :) Да, спасибо, я все испортил. Все ответы очень ценятся! –

2

Словари являются опциями по умолчанию, потому что они не уверены, что если пара ключ/значение существует. Обязательно укажите свой «!» А ТАКЖЕ "?" для переноса и разворачивания передаваемых данных.

1

Когда вы делаете это:

level1Dictionary[ChosenDeckLabel[textview.text]] 

вы пытаетесь получить доступ к ChosenDeckLabelarray используя String индекс:

ChosenDeckLabel[textview.text] 

, которая не является законной операцией. Массивы: Int индексируются, а не индексируются.

+0

Ударьте мне: '( – PeejWeej

+0

@PEEJWEEJ;) lol – gravicle

2

Массивы предлагают с помощью целых индексации и диапазонов, как показано в 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 
    } 
} 
Смежные вопросы