私は別の開発者から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)
}
}
なぜNSNullを割り当てますか? 'imageURL'はオプションです。値の文字列または 'nil'を代入します。 – rmaddy
hmm .... thx 2番目の質問に誤りがあるので、NSNullは割り当てません.Alamofireが行っているようです。私は現在、それが合理的な方法であり、 'item.imageUrl'がnilであるかどうかをチェックすることによってイメージを表示するようなものを調整する方法でしょうか? – timpone