我在做这样的for循环时出错了

for i in  0..<firstJSON["boxGroups"].array?.count{
   existingGroups.append(firstJSON["boxGroups"][0]["name"].stringValue)
 }

xcode抱怨“二进制运算符不能应用于int和‘int?’类型的操作数”

最佳答案

您面临的问题是因为Optional Chainingarray属性返回可选类型,因此count属性也返回可选对象。所以用if letguard let来包装可选的。
同样在for loop中,而不是使用i访问数组中的每个对象,您只使用0访问第一个对象。

if let boxGroupsArray = firstJSON["boxGroups"].array {
    for i in  0..<boxGroupsArray.count{
         existingGroups.append(boxGroupsArray[i]["name"].stringValue)
    }
}

使用flatMap而不是for loop有更好的选择
if let boxGroupsArray = firstJSON["boxGroups"].array {
    existingGroups = boxGroupsArray.flatMap { $0["name"].string }
}

10-05 18:59