2017-03-17 38 views
1

我是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'鍵。所以我想把這個並給予價值。但它似乎不工作 –

回答

0

試試這個:

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」] {}就夠了我認爲 –