2017-05-12 14 views
1

Good DayAlamofire:アンラッピング中に予期せずnilが見つかりました。

私は、既にAPIを作成し、Alamofireを使用して通信している企業と通信するiOS Swiftアプリケーションを持っています。私が持っている問題は、APIは、おそらくヌルにいくつかの時間を返すことができるであり、これは次のような問題が発生:

「致命的なエラー:オプションの値をアンラップしながら、予想外にnilを見つけ、」辞書から読み込みマイコードスニペットがある

を次のように:私はそのを処理する前にnullを辞書内のオブジェクトをチェックする方法が必要ですか私は、デフォルト値のいくつかのタイプを設定する必要が

if let LowRate = HotelList[i]["LowRate"] as? Decimal!{ 
    HList._LowRate = LowRate 
} 

私は、複数の質問とGoogleサイトを見直しています。

HotelData = "<null>"; 
     HotelList =(
      { 
       Address1 = "124 Oceanview Road"; 
       Address2 = Oneroa; 
       BookingUrl = "<null>"; 
       City = " Auckland"; 
       Country = "New Zealand"; 
       CurrencyCode = "<null>"; 
       DateViewed = "<null>"; 
       Description = "<null>"; 
       Directions = "<null>"; 
       Distance = "<null>"; 
       GeoPoint = "<null>"; 
       HighRate = "<null>"; 
       ImageUrl = "<null>"; 
       LowRate = "<null>"; 
       MinChildAge = "<null>"; 
       Name = "The Oyster Inn"; 
       NavUrl = "<null>"; 
       PostalCode = "<null>"; 
       State = "<null>"; 
       WebsiteUrl = "<null>"; 
       distance = "<null>"; 
       hotelID = 130; 
       isActive = 1; 
       isBlocked = 0; 
       isChildrenAllowed = "<null>"; 
       isFavorite = 0; 
       isPromoNotified = 0; 
       showDouble = "<null>"; 
} 
     ); 
     RowCount = 11; 
     hasError = 0; 
    }; 

私はJSONのためAlamofireを使用していますが、nullの可能性を返すことができる20個のいずれかのフィールドに返されたヌルがない限り、それは動作しますが、以下のように

JSON nullの例があります。

オプションのアンラッピング中に上記のようにnullの結果に対していくつかの検証チェックを行うのに誰も助けてくれますか?

よろしく

+0

'として? Decimal! 'アンラップを強制しないでください。 '!'を 'if let'の別のレベルで置き換えて、nilの可能性を扱います。 – Moritz

+0

良い日。あなたの返事をありがとう、私に "!" nilの検証のために "if let"を使用しますか?よろしくご協力ありがとうございます –

+0

あなた自身のコードの例があります。 :)これは既にどこでも説明されています。 "オプション"と "オプションバインディング"(これは 'if let'システムの名前です)を検索します。 – Moritz

答えて

0

これは、あなたがこれを行うことができる方法である。(更新)

if let lowRate = json["LowRate"], !(lowRate is NSNull){ 
    print(lowRate) 
}else{ 
    print("null") 
} 
-1

あなたのJSONのみを1つのオブジェクトの配列を持っています。私の価値は何ですか? 0より大きい場合はクラッシュします。私は私の答えを見つける手助けをするすべての貢献に

+0

私はちょうど1つを示したそれらのオブジェクトのうち11があります –

+0

HotelList [i] ["LowRate"] as?小数? –

+0

こんにちは、私は今これを試し、あなたに戻ってきます –

0

グッドデイ

感謝。最終的には、NSNumberオブジェクトを使用しなければならなかった上に似た何かが最後に働いていました。そして、それを後で10進数にキャストしてください。

if let lowRate = HotelList[i]["LowRate"] as? NSNumber{ 

HList._LowRate = LowRate 

}else{ 

    print("Null") 

} 

よろしく

関連する問題