You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:54:54