2017-03-10 5 views
0

URLからデータを取得していて、Jsonに戻ってきています。私がしようとしているのは、特定のJson列にnullまたはNilが含まれていない場合、特定のボタンの色を青色にすることです。これは私のJSONあるJson String値を読み取るIOS Swiftエラー

{ "投票": "0"、 "vote_status":ヌル}、{ "投票": "1"、 "vote_status": "11"}

することができますようにフィールドを参照してください。vote_statusは文字列として返しますが、値がnullの場合は、その周りに引用符はありません。私は私のコードではNULL値を確認するにはどうすればよい

私はエラー 致命的なエラーが発生しますが
// This will store all the vote_status values 
    var VoteStatus = [String]() 

    // captures the value 
     if var vote_Status = Stream["vote_status"] as? String { 

          self.VoteStatus.append(vote_Status) 
         } 

:インデックスの範囲外の私はNULL値は任意の文字列を持っていないので、それはポジティブだ

。 NULL値をチェックして "null"のようなものに変更する方法はありますか?私はこのようにしようとしました

if var voteStatus = Stream["vote_status"] as? String { 
           if vote_Status == nil { 
            vote_Status = "null" 
           } 
           self.VoteStatus.append(vote_Status) 
          } 

そして、文字列型のオプションでない値をnilと比較することは常に偽であると述べています。上記のコードはコンパイルしますが、ランタイムでエラーが発生します。 if var voteStatus = Stream["vote_status"] as? String {をそのがStream["vote_status"]が非nilの文字列値であることを保証するものです:あなたがそのコンパイル・エラーを取得している

答えて

1

理由は、これが合格した場合ということです。私は、スウィフトに新しいですが、何か提案は素晴らしいことです。あなたはまた、ゼロ値として文字列"null"を扱いたい場合は、一つの小さなビットを追加することができ、

if var voteStatus = Stream["vote_status"] as? String { 
    //Do whatever you want with a guaranteed, non-nil String 
} else { 
    //It's nil 
} 

:あなたはそれがnilの場合は、別の何かをしたい場合は、単にelse文を入れ

if var voteStatus = Stream["vote_status"] as? String, voteStatus != "null" { 
    //Do whatever you want with a guaranteed, non-nil, non-"null" String 
} else { 
    //It's nil or "null" 
} 

index out of rangeエラーは、あなたのコードで表示されないことが原因です。 Stream自体はオプションですか? 2番目の例では、voteStatus配列の初期化を忘れていますか?

+0

ありがとうございました –

関連する問題