- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个字典数组,我尝试使用以下键之一使用前缀进行过滤:
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/
在我的代码中,我有这样的基准: const STR = "abcd" const PREFIX = "ab" var STR_B = []byte(STR) var PREFIX_B = []byte
为什么以下总是打印不正确的“prefix”,但当 String 不是可选的或隐式解包可选时打印“无前缀”? var value:String! = "aaa" // Same incorrect b
我想避免在下面的示例代码中使用 if 语句,而是对我的号码字符串调用 hasPrefix 并传入 前缀 数组。有没有办法在 Swift 中做到这一点? let prefixes: [String] =
我有一个字典数组,我尝试使用以下键之一使用前缀进行过滤: let b = [["id":1,"name":"India"],["id":2,"name":"america"],["id":3,"nam
String.hasPrefix (或 [NSString hasPrefix])一直是 Foundation 的一部分。但是,我刚刚注意到现在我们也有 starts(with:) . 此方法来自 S
很简单,可能会问很多次,但这个没什么技巧。我们知道,NSString 在 hasPrefix: 方法中不区分大小写。 NSString *string = @"Xyzabcdedfghij";
在我的项目中,我需要一个字符串项的预定义前缀或后缀列表,它可以是前缀或后缀,这样我就可以遍历这些项并检查每个项的前缀或后缀,只是想知道哪个更便宜?感觉 hasPrefix: 比较便宜,但我没有任何引用
在 Swift2 中,您可以使用类似于以下代码的内容: switch productIdentifier { case hasSuffix("q"): return "
我在 Unity 中制作了一款游戏,并为 iOS 设备构建了它。客户问我们是否可以在游戏中实现 WebTrends,所以我关注了 this getting started guide有关如何安装它的说
我是一名优秀的程序员,十分优秀!