nil
を探している[String: Any]
の辞書を繰り返しているので、JSONの書き込みの場合はNSNull
と置き換えることができます。私のプリコンパイラの警告では、Any
とnil
を比較すると常にfalseになりますが、見つからない少なくとも2つのnilsが含まれていることがわかります。チェックする方法はありますか?Any
はゼロですか?オプションでないAnyをnilと比較すると、常にfalseになりますか?
答えて
任意はnil
です。それ以外は決してnil
になることはできません。 Any
はオプションではありません。したがって、Any
とnil
を比較する点はありません。テストは決して成功しません。
これらが選択肢であることが分かっている場合は、Any?
と入力してください。これはオプションで、nil
と比較することができます。ここに簡単な例があります:
let s : String? = nil
let any : Any? = s
if any == nil {
print("nil") // nil
}
ご覧のとおり、テストは成功します。
(すべての可能であればそれでも、より正確なものを入力してさらに良いでしょう。)
おそらく私のアンラップはオフですが、 mirror.children.enumerated()内の(_、attr)の の場合{ let propName = attr.labelの場合、jsonKey = keys [propName] { の場合、nilable = attr.valueをAnyとしますか? { 場合nilable == nilを{ 印刷 } ( "と呼ばれることはありません")}}} を '' ' – mcornell
さて、あなたは別の質問をする必要があると思いますあなたのコードの詳細に取得したい場合は、そのコードと、それを理解するために必要なすべて(つまり、すべての宣言された型)を表示します。あなたが本当に尋ねた疑問、つまりなぜこの警告と実行時の結果が得られたのか、そして 'nil'との比較を成功させるためには何が必要なのか、と私は答えました。 – matt
- 1. パスワードを比較するとBcryptがfalseになります
- 2. java異なるオプションと比較する
- 3. Python - 数値とブール値を比較する(常にfalseを返します)
- 4. Swift 3 NSArrayとnilを比較する
- 5. 値がnilになることはありません、比較は
- 6. 値がnilになることはありません、比較が迅速2.2
- 7. Javascriptを:常に標準の機能を比較すると、* falseを返す*
- 8. なぜdefault => trueのチェックボックスは、falseではなく他のオプションとしてnilになるのですか?
- 9. NaNとの比較が常にfalseを返す場合、floatとNaNを比較するにはどうすればよいですか?
- 10. 2つの等しいノードを比較すると、childNodesはfalseを返します。innerHTMLと比較するとtrueが返されます。なぜですか?
- 11. なぜunsigned longと負の数値を比較するとfalseになるのですか?
- 12. Objective-C、符号なし式<0の比較は常にfalseです。エラー?
- 13. 迅速な致命的なエラー:予期せぬことにnilをアンラベリング中にAny Arrayでオプションの値を
- 14. Javascript:2つの値が常に同じでないことを比較する
- 15. ラジオボタンとtrue/false/nullオプションのチェックボックスの比較
- 16. rspecではfalseがnilとみなされますか?
- 17. LINQリング:巨大なコレクションのAny()とContains()の比較
- 18. Python:空の文字列をFalseと比較するのはFalseです、なぜですか?
- 19. swiftのヌル値(nilまたはNSnullではない)をチェックすると常にnilが返されますか?
- 20. なぜ、2つの外見上等しいポインターを==と比較するとfalseが返されますか?
- 21. なぜself.navigationItem.backBarButtonItemは常にnilですか?
- 22. charを "*"と比較できないのはなぜですか?
- 23. Lambda式は、NotSupportedExceptionでbooleanをfalseと比較します。
- 24. 等しい文字列を比較するとFalseが返されますか?
- 25. 同じ内容のキューを比較すると、Bool Equalsメソッドは常にfalseを返します。
- 26. なぜオプション(nil)はありませんが、nilだけはありますか?
- 27. 日付を比較するとDiffは常に正の値をとるのはなぜですか?
- 28. なぜ2つの「正確な」JavaScriptオブジェクトの値を比較すると、Object.is()がfalseを返すのですか?
- 29. ファイル::比較の比較は常に-1を返します
- 30. 即時にnilオブジェクトを比較/返すことができません
スウィフト3.0.1(Xcodeの8.1)のよう、渡されたときに 'nil'がNSNull''に自動的に架設されていますObjective-C API(** JSONでは** null **になります)については、https://github.com/apple/swift-evolution/blob/master/proposals/0140-bridge-optional-to-nsnullを参照してください。 md。それはあなたのチェックを冗長にするかもしれません。例についてはhttp://stackoverflow.com/a/39976821/1187415を参照してください。 –
私はこれを解決すると思います - 今は8.0です。JSONに何も書き込まないときは、無効な型SwiftValueのエラーを返します。 – mcornell