2016-05-11 8 views
8

swiftyJSONメソッドexists()について知っていますが、彼らが言うように常に動作するとは思われません。 この場合、どうすれば適切な結果が得られますか?私はJSONの構造を変更することはできません。jsonがキーのない配列を含んでいる場合、swiftyJSONにキーが存在するかどうかをチェックする方法

var json: JSON = ["response": ["value1","value2"]] 
if json["response"]["someKey"].exists(){ 
    print("response someKey exists") 
} 

出力:

 
response someKey exists 

someKeyが存在しないため、印刷すべきではありません。しかし、その鍵はクライアントのAPIから来ることもあり、正しく存在するかどうかを調べる必要があります。

答えて

13

json["response"]の内容は辞書ではないため、あなたのケースでは機能しません。それは配列です。 SwiftyJSONは配列内の有効な辞書キーをチェックできません。予想通り辞書と

が、それは動作しますが、条件が、実行されません。

var json: JSON = ["response": ["key1":"value1", "key2":"value2"]] 
if json["response"]["someKey"].exists() { 
    print("response someKey exists") 
} 

あなたの問題へのソリューションは、コンテンツが実際に.exists()を使用する前に辞書であるかどうかを確認することです。

if let _ = json["response"].dictionary { 
    if json["response"]["someKey"].exists() { 
     print("response someKey exists") 
    } 
} 
+0

解決策は正常に動作します。ありがとうございました – Kocio

関連する問題