2016-10-18 19 views

답변

1

NIL로 병합 연산자

let value1 : Dictionary<String,Any> = dataDict["key1"] as? Dictionary<String,Any> ?? [:] 
print(value1) 

이하

과 함께 if - let를 사용할 필요가 없다 잘못된 방식 유착 전무 사용한 정확한 솔루션을 제안
let value1 = dataDict["key1"] as? [String:Any] ?? [String:Any]() 
+0

또는 더 짧게하자. 'let value1 = dataDict [ "key1"]? [String : Any] ?? [:]' – Hamish

+0

@vadian, 왜 우리는이 "dataDict ["key1 "]"이 무효가 될 가능성이 있다는 것을 알고 있다면 구현과 마찬가지로 if-let과 nil 병합을 사용할 수 없는지 설명해 주시겠습니까? if-let 문 자체에서 공백 사전을 지정하고 싶습니다. 그리고 거기에 작동하지 않는다. – Nijar

+0

실제로 nil coalescing operator는 if-let을한다. 키'key1'이 존재하지 않거나 값이'[String : Any]가 아닌 경우 빈 (비 선택적) 사전은 변수에 할당되고 그렇지 않으면 랩핑되지 않은 (!) 값이 할당됩니다. – vadian