加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 在Swift中搜索字典数组

发布时间:2020-12-15 01:44:45 所属栏目:百科 来源:网络整理
导读:我是Swift的新手,上课学习iOS编程.我发现自己难以理解如何在字典数组中搜索字符串值并将字符串值转储到数组中.这是从我的Xcode游乐场拍摄的. 我想弄清楚如何: 1)搜索一系列字典 2)将搜索结果转储到一个数组(我已经创建) 这些是字符词典. let worf = [ "name
我是Swift的新手,上课学习iOS编程.我发现自己难以理解如何在字典数组中搜索字符串值并将字符串值转储到数组中.这是从我的Xcode游乐场拍摄的.

我想弄清楚如何:
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

对于如何在这方面取得进展,我将不胜感激.我已经挖掘了一些例子,但我很快找到一个适用于我在这里尝试做的事情.

解决方法

在循环内部,您需要从字典中获取“最喜欢的饮料”条目,并将其附加到数组:

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

注意,if let drink =防止数组中没有这样的条目的可能性 – 如果没有,你会得到一个nil,而if正在检查,只有在不是nil的情况下才添加条目.

你有时可能会看到人们跳过if let部分,而只是写下饮料=字符[“最喜欢的饮料”] !,最后带有感叹号.不要这样做.这被称为“强制解包”一个可选项,如果没有从字典返回的有效值,则程序将崩溃.

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

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

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

.map表示:遍历字符中的每个条目,并将运行此表达式的结果放在一个新数组中(然后返回).

?? ??意思是:如果你从左侧拿回一个零,用右边的值替换它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读