【发布时间】:2017-03-17 03:57:06
【问题描述】:
我是 Swift 的新手。如何检查 JSONObject 中的密钥是否存在?在 Java 中,我可以做到这一点 jsonObject.has("selected") 。在我的代码下面:
currTable = filteredDataTable[indexPath.row] as! [AnyHashable: Any]
if ((currTable.index(forKey: "selected") != nil) /*currTable["selected"]) != nil*/) {
currTable.updateValue((!((currTable["selected"] as? Bool)!)), forKey: "selected")
}
else {
currTable.updateValue(true, forKey: "selected")
}
print(currTable)
在我上面的代码中,当我单击我的 CollectionView 单元格时,它总是给我else 条件。所以我的 JSONObject 中的 selected 键总是正确的。我犯错了吗?我已阅读this,但并不清楚我的所有问题。
【问题讨论】:
-
看起来好像 currTable 字典没有名为“selected”的键。您是否在 if 条件上设置了断点并检查以查看您的数据是什么样的以及为什么未设置密钥?可能是您没有使用“选定”的值进行初始化,或者您的条件应该是 == nil?
-
你尝试使用“expr(bool) ? expr : expr”还是“if let/guard let”?
-
@Fahim 绝对正确。
currTable永远不会有selected键。所以我想把它放出来并给出价值。但它似乎不起作用 -
@Evsenev 不,我还没有尝试过。我会读到
guard对不起我的英语不好 -
@MarioMargoPradipta 好的,然后,反转您的条件 - 如果您开始时没有“选定”键,则查找 == nil 并在选择一行时将选定键的值设置为 true .因为你一开始没有选择任何东西(至少我认为你这样做了),所以设置“selected”应该引入字典的键。希望这是有道理的?