如何编写一个从字典变量返回可选字符串数组的函数?

时间:2019-06-11 08:14:36

标签: ios arrays swift dictionary optional

我有一个写的函数 func synonyms(for:) --> [String : [String?]]
我想使其返回一个可选数组(字符串)。我有一个字典变量([String : [String]]),看起来像一个单词(键)和数组(值,该单词的4-6个不同同义词之间的任意值)。 为了实现这一目标,我想为了返回传入单词的同义词,我实际上需要告诉计算机从我的userinput(TextField,ViewController,并且我正在使用UI Delegate)中找到匹配的键。 )。为此,我使用了for-in循环。这里的问题是,当编译器说“ for”实际上是我的同义词函数的参数/参数时,它说“ for”是“ for循环”。 我应该在同义词函数的内部写什么?

为了在此函数中返回传入单词的同义词,我需要告诉计算机从我的userinput(TextField,ViewController,并且我正在使用UI Delegate)中找到匹配的键。我尝试使用for-in循环。问题在于,编译器说“ for”实际上是我的同义词函数的参数/参数时,是“ for循环”。

    func synonyms(for: String) -> [String: [String?]] {
        let synonynmsAre = "your synonyms \(for) are)"
        return synonynmsAre
    }

    print(synonyms(for: "swift"))
    synonyms(for: "swift")

您的同义词是Optional(["abrupt", "expeditious", "hasty", "nimble", "quick", "rapid", "speedy", "sudden", "unexpected"]) 但是,这里没有括号和Optional。我希望这也显示在我的iOS应用程序的TextView中。我正在使用最新版本的XCode和最新版本的Swift。

1 个答案:

答案 0 :(得分:2)

我认为您需要这样的东西:

// Basically where you store the synonyms
let synonymsDictionary = [
    "swift": ["foo", "bar", "baz"],
    "objective-c": ["NSFoo", "NSBar", "NSBaz"]
]

// Just return an optional array here
func synonyms(for word: String) -> [String]? {
    return synonymsDictionary[word]
}


// how to use

if let possibleSynonyms = synonyms(for: "swift") {
    print(possibleSynonyms.joined(separator: ", ")) // prints foo, bar, baz
    // or
    someLabel.text = possibleSynonyms.joined(separator: ", ")
}