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
相关产品推荐
相关产品推荐

