NSTextField для маркировки с использованием TextField в качестве имени словаря - PullRequest
0 голосов
/ 03 июня 2018

Swift4, Xcode9.3, приложение Cocoa.

Как изменить строку labelMain на словарное слово со строковым ключом?

например, пользователь вставил "dict1""в TextField приложение должно распознать, что оно находится в словарном ключе dict1" 2 ", а метка должна выводить слово" word2 "вместо других слов.

    let dict0 : Dictionary<String, String> = ["0" : "word0", "1" : "word1"]
    let dict1 : Dictionary<String, String> = ["2" : "word2", "3" : "word3"]

    labelMain.stringValue = TextField.stringValue["2"]

error: Невозможно подписать aзначение типа 'String' с индексом типа 'String'

1 Ответ

0 голосов
/ 03 июня 2018

Создайте словарь, который отображает имена словаря в фактический словарь:

let dict0 : Dictionary<String, String> = ["0" : "word0", "1" : "word1"]
let dict1 : Dictionary<String, String> = ["2" : "word2", "3" : "word3"]
let dictMap = ["dict0": dict0, "dict1": dict1]

if let dict = dictMap[TextField.stringValue], let word = dict["2"] {
    labelMain.stringValue = word
}

или используя необязательное сцепление :

if let word = dictMap[TextField.stringValue]?["2"] {
    labelMain.stringValue = word
}

или в сочетании с оператор объединения nil для предоставления значения по умолчанию, если ничего не найдено:

labelMain.stringValue = dictMap[TextField.stringValue]?["2"] ?? ""
...