检查 JSONObject 中的键 Swift

11 浏览
0 Comments

检查 JSONObject 中的键 Swift

我是Swift的新手。如何检查JSONObject中的键是否存在?在Java中,我可以这样做`jsonObject.has(\"selected\")`。以下是我的代码:\ncurrTable = filteredDataTable[indexPath.row] as! [AnyHashable: Any]\nif ((currTable.index(forKey: \"selected\") != nil) /*currTable[\"selected\"]) != nil*/) {\n currTable.updateValue((!((currTable[\"selected\"] as? Bool)!)), forKey: \"selected\")\n}\nelse {\n currTable.updateValue(true, forKey: \"selected\")\n}\nprint(currTable)\n\n在上面的代码中,当我点击我的CollectionView单元格时,它总是给我`else`条件。所以我的JSONObject中的`selected`键总是true。我犯了一个错误吗?我已经阅读了[这个](https://stackoverflow.com/questions/28129401/determining-if-swift-dictionary-contains-key-and-obtaining-any-of-its-values#_=_),但它并没有清楚解决我的所有问题。

0
0 Comments

问题的出现的原因:代码中的逻辑错误,导致无法正确判断JSONObject中是否存在指定的key。

解决方法:更改代码逻辑,使用正确的方式判断JSONObject中是否存在指定的key。

整理成一篇文章:

在Swift中,我们经常会使用JSONObject(即字典)来存储和处理数据。然而,在处理JSONObject时,有时候我们需要检查其中是否存在某个特定的key。下面是一段处理JSONObject的代码:

currTable = filteredDataTable[indexPath.row] as! [AnyObject: Any]

if let selectedTableElement = currTable["selected"] != nil {

currTable.updateValue(false, forKey: "selected")

}

else {

currTable.updateValue(true, forKey: "selected")

}

print(currTable)

这段代码的目的是检查JSONObject中的key为"selected"的值,并根据情况进行修改。然而,这段代码存在问题,无法正确判断JSONObject中是否存在指定的key。

接下来的讨论中,出现了一个名为selectedTableElement的常量。根据讨论,我们可以得出这个常量仅用于在条件语句中检查是否为nil,并不会对功能产生任何影响。因此,我们可以使用下划线(_)来代替这个无用的常量。

修改后的代码如下所示:

currTable = filteredDataTable[indexPath.row] as! [AnyObject: Any]

if let _ = currTable["selected"] {

currTable.updateValue(false, forKey: "selected")

}

else {

currTable.updateValue(true, forKey: "selected")

}

print(currTable)

通过上述修改,我们可以更简洁地判断JSONObject中是否存在指定的key,并根据情况进行相应的修改。

然而,根据讨论的最后一句话,这种修改可能并不适用于所有情况。因此,根据具体需求,我们还需要进一步调整代码逻辑,以确保正确判断JSONObject中是否存在指定的key。

0