所以我们的想法是用户可以创建包含多对单词的集合。
例如,他们创建了一个集合nouns
,并在其中添加了一些单词和单词的翻译。然后他们创建了另一个名为 colors
的集合并添加了相应的键和值等等:
userInput = {
nouns: {
"dog": "translation",
"cat": "translation",
"fish": "translation"
//etc
},
colors: {
"red": "translation",
"green": "translation",
"blue": "translation"
//etc
}
//etc..
}
我如何在 Swift 中实现它?
这是否意味着每次用户添加新集合时我都必须创建新词典?
我试过做类似的事情
var dict = [String: AnyObject]()
var collectionNanme = input.text
dict[collectionNanme] = [Dictionary<String, String>]() as AnyObject
dict[collectionNanme].append([word1.text: word2.text])
可是错误数不清!执行此操作的正确方法是什么?
更新:
import UIKit
var main = [String: [String:String]]()
class ViewController: UIViewController {
@IBOutlet weak var collection: UITextField!
@IBOutlet weak var input1: UITextField!
@IBOutlet weak var input2: UITextField!
var collectionName = collection.text!
var inner:[String:String] = main[collectionName] ?? [:]
inner[input1.text!] = input2.text!
main[collectionName] = inner
@IBAction func click(_ sender: Any) {
print(main[collectionName])
}
}
最佳答案
你需要
var main = [String: [String:String]]()
获取当前值
var collectionName = input.text! // nouns / colors
var inner:[String:String] = main[collectionName] ?? [:]
改变与挫折
inner["dog"] = "translation"
main[collectionName] = inner
import UIKit
var main = [String: [String:String]]() // global
class ViewController: UIViewController {
@IBOutlet weak var collection: UITextField!
@IBOutlet weak var input1: UITextField!
@IBOutlet weak var input2: UITextField!
var collectionName = "nouns"
override func viewDidLoad() {
super.viewDidLoad()
var collectionName = collection.text! // collection.text! will be "" as textfield is empty when the above function is called
var inner:[String:String] = main[collectionName] ?? [:]
inner[input1.text!] = input2.text!
main[collectionName] = inner
}
@IBAction func click(_ sender: Any) {
print(main[collectionName])
}
}
或
import UIKit
var main = [String: [String:String]]() // global
class ViewController: UIViewController {
@IBOutlet weak var collection: UITextField!
@IBOutlet weak var input1: UITextField!
@IBOutlet weak var input2: UITextField!
var collectionName = "nouns"
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func save(_ sender: Any) { // save button action
print("Before save : " , main)
var collectionName = collection.text!
var inner:[String:String] = main[collectionName] ?? [:]
inner[input1.text!] = input2.text!
main[collectionName] = inner
print("After save : " , main)
}
}
关于swift - 在用户输入的另一个键中创建一个包含键和值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55329805/