在JSONObject中检查密钥Swift

问题描述:

我是Swift中的新成员,我有一个简单的问题,但我坚持了很多小时。如何检查JSONObject的密钥是否存在?在Java中,我可以做到这一点jsonObject.has("selected")。下面我的代码:在JSONObject中检查密钥Swift

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) 

在上面我的代码,它总是给我else条件当我点击我的CollectionView细胞。所以我的JSONObject中的selected键始终为真。我做错了吗? 。我已阅读this,但它不清楚我的所有问题。任何建议都会有帮助。由于之前

+0

它看起来好像currTable字典里没有名为键“选择”。你有没有在if条件中设置一个断点并检查你的数据是什么样子以及为什么没有设置密钥?可能是因为你没有使用“selected”值初始化,或者你的条件应该是== nil? – Fahim

+0

您是否尝试使用“expr(bool)?expr:expr”或“如果让/警卫让”? – Evsenev

+0

@Fahim它绝对正确。 'currTable'永远不会有'selected'键。所以我想把这个并给予价值。但它似乎不工作 –

试试这个:

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) 
+0

什么是selectedTableElement? –

+0

只是一个常量来检查条件中的零,但它不会改变任何功能。 – Harish

+0

可以使用'_'而不是未使用的术语。 Anw,'if let _ = currTable [“selected”] {}就够了我认为 –