2017-08-22 7 views
-3

私はbool変数が必要です - isChecked。感嘆符で反対に値を変更Swift

ある何私がしたい、そのようなその変数に反対の値を設定します

(viewModel.arrValues[row] as! TestItem).isChecked = ((viewModel.arrValues[row] as? TestItem)?.isChecked)! 

ロジックは簡単です!マークは反対の値を提示すると仮定する。しかし、上記のコードは動作しません。どうして?

+4

を追加してみてください '!'( '!X 'ではなく、X'より! ')前に行きます。 – Thilo

+0

「動作しません」と定義します。そして、反対の値の前に '!'を置くとどうなりますか? –

答えて

3

の後に感嘆符を付けると、可変マークがアンラッピングを強制します。一般に、式の後に感嘆符を付けることは、何かを強制することを意味します(as!で強制的にキャスティングするか、オプションのアンラッピングを強制するなど)。

の前にを入れてブール式を否定する必要があります。

(viewModel.arrValues[row] as! TestItem).isChecked = !((viewModel.arrValues[row] as? TestItem)?.isChecked)

1

後に等しい

(viewModel.arrValues[row] as! TestItem).isChecked = !((viewModel.arrValues[row] as? TestItem)?.isChecked) 
関連する問題