gpt4 book ai didi

arrays - "hasPrefix"在 Swift 中不工作

转载 作者:搜寻专家 更新时间:2023-11-01 05:52:34 25 4
gpt4 key购买 nike

我有一个字典数组,我尝试使用以下键之一使用前缀进行过滤:

let b = [["id":1,"name":"India"],["id":2,"name":"america"],["id":3,"name":"africa"],["id":4,"name":"indonesia"],["id":5,"name":"jakarta"],["id":6,"rec_name":"Zimba"]]

let g = b.filter({String(describing: $0["name"]).hasPrefix("I")})

print(g) //retun Empty array

如果我尝试使用 contains 然后它工作正常

如果我只尝试使用纯字符串数组,那么它也能正常工作

谢谢,

最佳答案

由于您的数组 (b) 包含字典,其中 name 并不总是存在(您有一个带有 rec_name 的对象),您可以修改你的过滤器是这样的:

let g = b.filter {
guard let name = $0["name"] as? String else { return false }
return name.hasPrefix("I")
}

从而确保只有具有该键值的字典才会被您的过滤器匹配


有趣的事实:当我们做这样的事情时,原始代码不起作用的原因(正如 Martin 指出的那样)非常明显:

let g = b.map({String(describing: $0["name"])}) 
print(g)

打印:

["Optional(\"India\")", "Optional(\"america\")", "Optional(\"africa\")", "Optional(\"indonesia\")", "Optional(\"jakarta\")", "nil"]

关于arrays - "hasPrefix"在 Swift 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43317140/

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