gpt4 book ai didi

ios - 在 Swift 中搜索字典数组以获取值

转载 作者:IT王子 更新时间:2023-10-29 05:29:00 24 4
gpt4 key购买 nike

我是 Swift 的新手,正在上课学习 iOS 编程。我发现自己对如何在字典数组中搜索字符串值并将字符串值转储到数组中感到困惑。这是从我的 Xcode playground 中获取的。

我正在尝试弄清楚如何:1)搜索一系列字典2) 将搜索结果转储到一个数组(我创建的数组)中

这些是字符字典。

let worf = [
"name": "Worf",
"rank": "lieutenant",
"information": "son of Mogh, slayer of Gowron",
"favorite drink": "prune juice",
"quote" : "Today is a good day to die."]

let picard = [
"name": "Jean-Luc Picard",
"rank": "captain",
"information": "Captain of the USS Enterprise",
"favorite drink": "tea, Earl Grey, hot"]

这是上面列出的字符字典的数组。

let characters = [worf, picard]

这是我要编写的函数。

func favoriteDrinksArrayForCharacters(characters:Array<Dictionary<String, String>>) -> Array<String> {
// create an array of Strings to dump in favorite drink strings
var favoriteDrinkArray = [String]()

for character in characters {
// look up favorite drink

// add favorite drink to favoriteDrinkArray
}

return favoriteDrinkArray
}

let favoriteDrinks = favoriteDrinksArrayForCharacters(characters)

favoriteDrinks

如果您能就如何推进此事提供任何帮助,我将不胜感激。我已经四处寻找示例,但我很快就找不到适用于我在这里尝试做的事情的示例。

最佳答案

在循环内,您需要从字典中获取“favorite drink”条目,并将其附加到数组中:

for character in characters {
if let drink = character["favorite drink"] {
favoriteDrinkArray.append(drink)
}
}

请注意,if let drink = 防止数组中没有这样的条目的可能性——如果没有,你会得到一个 nil,并且if 正在检查它,只有在它不是 nil 时才添加条目。

有时您可能会看到人们跳过 if let 部分,而只是写 let drink = character["favorite drink"]!,并在末尾加上感叹号. 不要这样做。这被称为“强制展开”可选值,如果字典中没有返回有效值,您的程序就会崩溃。

第一个示例的行为是,如果没有饮料,则不会将其添加到数组中。但这可能不是您想要的,因为您可能期望字符数组中的条目与饮料数组中的条目之间存在一对一的对应关系。

如果是这种情况,并且您可能想要一个空字符串,您可以改为这样做:

func favoriteDrinksArrayForCharacters(characters: [[String:String]]) -> [String] {
return characters.map { character in
character["favorite drink"] ?? ""
}
}

.map 的意思是:遍历 characters 中的每个条目,并将运行此表达式的结果放入一个新数组(然后返回)。

?? 的意思是:如果您从左侧返回一个 nil,请将其替换为右侧的值。

关于ios - 在 Swift 中搜索字典数组以获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28203443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com