Swift 4:判断FirebaseDataGlobal对象数组是否含指定字符串及空数组适配
Swift检查结构体数组是否包含特定字符串的实现方案
你现在的问题是数组里存的是FirebaseDataGlobal结构体实例,直接用contains("string")肯定不行,因为数组元素不是字符串类型,得针对结构体的symbol属性来判断,给你两种实用的实现方式:
直接使用
contains(where:)方法
这是最简洁的写法,通过闭包遍历数组,检查每个元素的symbol是否匹配目标字符串:let target = "你要找的字符串" if dataArray.contains(where: { $0.symbol == target }) { print("string found") }给数组扩展专属方法(更贴近你期望的写法)
如果这个判断逻辑会多次用到,可以给数组写个扩展,让调用方式更接近你一开始想的样子:extension Array where Element == FirebaseDataGlobal { func containsSymbol(_ symbol: String) -> Bool { return contains(where: { $0.symbol == symbol }) } }之后调用就很直观了:
if dataArray.containsSymbol("string") { print("string found") }
关于空数组的问题
完全可以用这类函数!当dataArray为空时,contains(where:)会直接返回false,不会触发任何错误,逻辑上完全安全。
额外提醒
你的结构体里symbol是String!(隐式解包可选类型),如果存在symbol为nil的可能,建议在判断时加上非空检查,避免潜在崩溃:
if dataArray.contains(where: { $0.symbol != nil && $0.symbol == target }) { print("string found") }
如果业务上symbol应该始终有值,最好把类型改成普通的String,代码会更安全。
内容的提问来源于stack exchange,提问作者husharoonie
相关产品推荐
相关产品推荐

