Вы можете либо преобразовать свой int в строку, используя String(2)
, либо преобразовать свою строку в int, например Int("2")
Мой ответ - преобразовать ваш словарь clariQuestion в массив, потому что ключи являются целыми числами, а array можно рассматривать как словарь, где ключи являются целыми числами. Итак, вы могли бы сделать
var clariQuestion: [String] = ["What are my last 10 transactions",
"What are my spending transactions",
"What are my largest trasactions",
"What are my pending tracnstions"]
var explanationActionParameters: [String: Any] = ["clariQuestion": 2]
let questionIndex = explanationActionParameters["clariQuestion"]
let question = clariQuestion[questionIndex]
Если вы настаиваете на сохранении этой структуры словаря, вы можете flatmap
свои словари и преобразовать все ключи из строки в int, как это
clariQuestion.flatMap { (key, value) in [Int(key) : value] }
или преобразуйте все свои значения в строку, например
explanationActionParameters.flatMap { (key, value) in [key : String(value)] }
В любом случае, теперь у вас должен быть доступ к элементам в этих словарях. Я собираюсь создать функцию, демонстрирующую, как
func replace(_ clariQuestion: [String : String], _ explanationActionParameters: [String: Any]) -> [String: String] {
// The dictionary that will be returned containing the mapping from clariQuestion to explanationActionParameters
var ret = [String : String]()
let mappedClariQuestion = clariQuestion.flatMap { (key, value) in [Int(key) : value] }
for (key, value) in clariQuestion {
ret[key] = mappedClariQuestion[value]
}
return ret
}
Затем просто explanationActionParameters = replace(clariQuestion, explanationActionParameters)