arrays - "hasPrefix"在 Swift 中不工作

标签 arrays swift dictionary

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

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/

相关文章:

python - 在numpy下合并两个数组

java - C++ 中的 scanf、memset 和几个 while 在 Java 中是什么意思?

sql - 从 PostgreSQL 表中的数组中删除 # 个字符?

swift - 自定义 UITabBarItem 的文本颜色和字体导致 swift 出现奇怪的结果

ios - 使用 AutoLayout 在 UIScrollView 底部查看

java - 为什么我的循环在迭代和数组时会提前停止

json - 用于解析 JSON 并返回字典数组的 Swift 函数

python - 键为数字时的字典顺序

java - 如何根据条件返回 map 的键?

python - 遍历字典或其键并更改值是不好的做法吗?