如何通过Swift中的函数传递字典键以返回数组值

如何通过Swift中的函数传递字典键以返回数组值,swift,dictionary,optional,Swift,Dictionary,Optional,我的任务是编写一个基本的“同义词库”应用程序,只有几个条目,但我不知道如何编写代码,以便在通过我的函数传递的键具有nil值时返回结果 最终,想法是将文本字段输入连接到文本视图输出,以便用户可以输入任何单词以尝试获得响应。但是我甚至不能在没有连接到用户界面的情况下拨入我的代码 let synonyms = ["swift" : ["abrupt", "expeditious", "hasty", "nimble", "quick", "rapid", "speedy", "sudden", "un

我的任务是编写一个基本的“同义词库”应用程序,只有几个条目,但我不知道如何编写代码,以便在通过我的函数传递的键具有nil值时返回结果

最终,想法是将文本字段输入连接到文本视图输出,以便用户可以输入任何单词以尝试获得响应。但是我甚至不能在没有连接到用户界面的情况下拨入我的代码

let synonyms = ["swift" : ["abrupt", "expeditious", "hasty", "nimble", "quick", "rapid", "speedy", "sudden", "unexpected"]]

func buttonPressed(key:String)-> Array<Any> {
        return synonyms[key]!
}

buttonPressed(key: "swift")
let同义词=[“swift”:[“突然”、“迅速”、“匆忙”、“敏捷”、“快速”、“快速”、“快速”、“突然”、“意外”]]
按下func按钮(键:字符串)->数组{
返回同义词[键]!
}
按下按钮(键:“swift”)
我无法在没有强制展开的情况下运行此函数,但我最终希望此函数能够为nil输入返回一个字符串,该字符串表示“对不起,这个单词不在同义词库中。”

如果我用“if let”打开包装,我想不出我的“else”应该是什么;如果我的键在字典中有一个值,我不知道如何返回一个数组,但是在nil的情况下返回一个字符串


有什么建议吗?谢谢

字典总是返回可选项,因为该键可能不存在。把你的字典想象成[String:[String]?]

可以使用nil合并操作符像这样展开它

func按钮按下(键:字符串)->Array{
返回同义词[key]?[“对不起,这个词不在同义词库中。”]
}

由于键可能不存在,字典总是返回可选的。把你的字典想象成[String:[String]?]

可以使用nil合并操作符像这样展开它

func按钮按下(键:字符串)->Array{
返回同义词[key]?[“对不起,这个词不在同义词库中。”]
}

首先是逻辑。因为您的字典是
[String:[String]]
所以您需要将
字符串的数组作为字符串键的值返回

所以你有这个想法:你有一个带有输入的文本字段,按钮和文本视图。首先,按下按钮时需要注册。因此,为事件
创建操作。touchUpInside

@IBAction func buttonPressed(_ sender: UIButton) {
}
因此,您可以通过获取文本字段的
text
属性来获取文本字段的文本。您可以对文本视图执行相同的操作

textField.text 
textView.text
所以现在当按下按钮时,从文本字段获取输入,若文本字段的文本键存在,则将文本视图的文本更改为该键的值

@IBAction func buttonPressed(_ sender: UIButton) {
    if let synonyms = synonyms[textField.text!] {
        let text = array.joined(separator: ", ")
        textView.text = text
    }
}
你注意到这句话了吗

let text = array.joined(separator: ", ")

。。。您不能将
textView
的文本设置为数组,因为数组的类型为
[String]
,而
text
属性为单个字符串。所以,这将把数组“连接”到单个
字符串中,数组中的每个元素之间都有分隔符

首先是逻辑。因为您的字典是
[String:[String]]
所以您需要将
字符串的数组作为字符串键的值返回

所以你有这个想法:你有一个带有输入的文本字段,按钮和文本视图。首先,按下按钮时需要注册。因此,为事件
创建操作。touchUpInside

@IBAction func buttonPressed(_ sender: UIButton) {
}
因此,您可以通过获取文本字段的
text
属性来获取文本字段的文本。您可以对文本视图执行相同的操作

textField.text 
textView.text
所以现在当按下按钮时,从文本字段获取输入,若文本字段的文本键存在,则将文本视图的文本更改为该键的值

@IBAction func buttonPressed(_ sender: UIButton) {
    if let synonyms = synonyms[textField.text!] {
        let text = array.joined(separator: ", ")
        textView.text = text
    }
}
你注意到这句话了吗

let text = array.joined(separator: ", ")
。。。您不能将
textView
的文本设置为数组,因为数组的类型为
[String]
,而
text
属性为单个字符串。所以,这将把数组“连接”到单个
字符串中,数组中的每个元素之间都有分隔符

我希望这对你有帮助。 要返回数组,请执行以下操作:

let同义词=[“swift”:[“突然”、“迅速”、“匆忙”、“敏捷”、“快速”、“快速”、“快速”、“突然”、“意外”]]
func搜索(键:字符串)->[字符串]{
//默认值也应该是带有一个字符串元素的数组
返回同义词[key]?[“对不起,这个词不在同义词库中。”]
}
//这是将调用search(key:)方法的按钮操作
@iAction按钮按下(u发送方:ui按钮){
让results=search(key:textField.text???)//从UITextField获取文本
}
我希望这对您有所帮助。 要返回数组,请执行以下操作:

let同义词=[“swift”:[“突然”、“迅速”、“匆忙”、“敏捷”、“快速”、“快速”、“快速”、“突然”、“意外”]]
func搜索(键:字符串)->[字符串]{
//默认值也应该是带有一个字符串元素的数组
返回同义词[key]?[“对不起,这个词不在同义词库中。”]
}
//这是将调用search(key:)方法的按钮操作
@iAction按钮按下(u发送方:ui按钮){
让results=search(key:textField.text???)//从UITextField获取文本
}

不相关,但您将返回
Array
而不是
Array
不相关,但您将返回
Array
而不是
Array