2016-09-18 2 views
2

'결과 '가'결과 '배열의 객체를 나타내는 것이 목적이라면 case let을 다음과 같이 드롭하고'for result in '을 사용하십시오. 왜 case let이 필요한지 이해할 수 없습니다.Swift syntax 'case for 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 응답의 모든 오브젝트를 원하기 때문에 루프와 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 { 

    } 
} 

.