2017-03-20 13 views
0

私は別の開発者からSwiftプロジェクトを継承しました。私たちは、今度は がJSON APIから返されるアイテムの一部となりうるimageUrlを追加しています。我々はAlamofireを使用して戻っています。SwiftのJSON nilを便利な初期化子でチェックする方法

1つの問題は、 がアイテムのimageUrlになるinstore_image_url_200wにnull値を設定できることです。私は2つの質問があると思う。 imageUrlをオプションの文字列にしたいと思うようです。これは正しいです?はいの場合、初期化中にnil値を処理する適切な方法は何ですか? 私はitem.imageUrl

var items = [Item]() 
    Alamofire.request(URL(string: "https://www.example.com/api/v1/metro_areas/1")!, method: .get).validate().responseJSON { (response) -> Void in 
    guard let value = response.result.value as? [String: Any], 
     let rows = value["items"] as? [[String: Any]] else { 
     print("Malformed data received from fetchAllRooms service") 
     return 
    } 
    for row in rows { 
     let item = Item(data: row) 
     if (item.imageUrl is String){ 
     print("here is item.imageUrl: \(item.imageUrl!)") 
     } 
     items.append(item) 

    } 
} 

とモデルのためのディスプレイにはnilをチェックすることがしたいと思います:

class Item { 
    var name: String 
    var imageUrl: String? 

    init(name: String, imageUrl: String) { 

    self.name = name 
    self.imageUrl = imageUrl 
    } 

    convenience init(data: [String:Any]) { 
    let name = data["header"] as? String 
    let imageUrl = data["instore_image_url_200w"] as! String? 
    self.init(name: name!, 
       imageUrl: imageUrl) 
    } 
} 
+0

なぜNSNullを割り当てますか? 'imageURL'はオプションです。値の文字列または 'nil'を代入します。 – rmaddy

+0

hmm .... thx 2番目の質問に誤りがあるので、NSNullは割り当てません.Alamofireが行っているようです。私は現在、それが合理的な方法であり、 'item.imageUrl'がnilであるかどうかをチェックすることによってイメージを表示するようなものを調整する方法でしょうか? – timpone

答えて

1

はい、imageUrlはオプションの文字列、それはかもしれない、またはかもしれないのでになり、中に存在しますJSONデータワンポイント - あなたが現在としてimageUrlためのモデルの初期化コードを持っている:あなたの場合は、2番目の質問については

let imageUrl = data["instore_image_url_200w"] as? String 

:個人的に

let imageUrl = data["instore_image_url_200w"] as! String? 

、私はそれのようにそれを持ってきれいだと思います上記のような初期化を行うと、imageUrlの値はオプションであるため、nil値は初期化時に自動的に処理されるため、nil(nil値)に設定されるか、実際の文字列値になります。

もちろん、imageUrlを使用するときは、それがゼロであるか値を持っているかどうかをチェックする必要がありますが、ディスプレイ上でこれを行うと述べています。

+0

thx Fahim - 今より多くの意味を作り、提案した変更を加えました – timpone

+0

喜んでお手伝いしてください、@timpone :) – Fahim

関連する問題