2016-09-18 23 views
2

'result'に 'results'配列のオブジェクトを表すことを目的とする場合は、case letを以下にドロップして代わりに 'for result in'なぜcase letが必要なのか分かりません。スウィフトの構文 'case for'ループが混乱しています

if let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] { 
    for case let result in json["results"] { 
     if let restaurant = Restaurant(json: result) { 
      restaurants.append(restaurant) 
     } 
    } 
} 

JSON

{ 
    "query": "sandwich", 
    "results_count": 12, 
    "page": 1, 
    "results": [ 
     { 
      "name": "Caffè Macs", 
      "coordinates": { 
       "lat": 37.330576, 
       "lng": -122.029739 
      }, 
      "meals": ["breakfast", "lunch", "dinner"] 
     }, 
     ... 
    ] 
} 

REF:https://developer.apple.com/swift/blog/したい場合は、results応答のすべてのオブジェクトをしたいので、forループでcase letを使用する必要は、ありません、あなたの場合は

答えて

5

どのようにcase letがこれを使用しているかを理解する。

let albumDic = [ 
    ("Red", 2014), 
    ("1989", 2014), 
    ("Fearless", 2008), 
    ("Speak Now", 2008) 
] 

for case let (album, 2014) in albumDic { 
    print("Album \(album) was released in 2014") 
} 

出力

Album Red was released in 2014 
Album 1989 was released in 2014 

注:あなたはすべてのオブジェクトをしたいので、あなたは、このように書く必要があるので、あなたが直接、ループ内のためcase letを使用する必要を使用することはできません。あなたがのためのこのtutorialを確認することができます詳細については

if let results = json["results"] as? [[String: Any]]{ 
    for result in results { 

    } 
} 

関連する問題