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

Swift中数组条件判断问题:如何正确判断模型数组为空?

如何正确判断模型类数组是否为空?

你现在踩了个典型的类型不匹配坑——addonCategory是可选的模型数组类型[AddonCategoryModel]?,但你却把它和字符串"[]"做比较,这两种类型完全不兼容,编译器肯定会报错。你打印时看到的[]只是数组的字符串描述,不是它本身的类型哦。

给你几种正确的判断方式:

方式1:先用可选绑定处理nil,再判断空数组

这种方式能明确区分addonCategory是nil还是空数组的情况:

// 先安全取出可选的addonCategory
if let addonCategory = subCategoryModel![tappedIndex.section].items[tappedIndex.row].addonCategory {
    if addonCategory.isEmpty {
        print("Hello") // 数组不为nil但为空
    } else {
        print("Hi") // 数组有内容
    }
} else {
    print("Hello") // 数组为nil,也可以按空数组逻辑处理
}

方式2:用nil合并运算符把nil转为空数组

如果nil和空数组对你来说逻辑一致,直接用??把nil替换成空数组,再判断:

// 把nil转为空数组,统一处理
let addonCategory = subCategoryModel![tappedIndex.section].items[tappedIndex.row].addonCategory ?? []
if addonCategory.isEmpty {
    print("Hello")
} else {
    print("Hi")
}

额外建议:尽量避免强制解包

你代码里用了subCategoryModel!这种强制解包,如果subCategoryModel是nil的话会直接崩溃。建议换成安全的可选绑定:

// 先确认subCategoryModel存在,且索引不越界
if let subCategoryModel = subCategoryModel, 
   tappedIndex.section < subCategoryModel.count,
   tappedIndex.row < subCategoryModel[tappedIndex.section].items.count {
       
       let addonCategory = subCategoryModel[tappedIndex.section].items[tappedIndex.row].addonCategory ?? []
       if addonCategory.isEmpty {
           print("Hello")
       } else {
           print("Hi")
       }
} else {
    // 处理索引越界或者subCategoryModel为nil的异常情况
    print("数据异常或索引越界")
}

内容的提问来源于stack exchange,提问作者raheem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:19:39