2017-03-31 26 views
0

문자열 형식이 아닌 옵션을 취하고 .some() 또는 일부 기본값 인 경우 해당 값의 문자열 해석 중 하나 인 String 값을 얻을 수있는 간결한 방법이 있습니까? 값은 다음과 같은 외에 .none() 인 경우 :Nil Coalescing Operator with mixed types

let statusCode = (resp as? HTTPURLResponse)?.statusCode 
let statusCodeString: String 
if let statusCode = statusCode { 
    statusCodeString = "\(statusCode)" 
} else { 
    statusCodeString = "None" 
} 

그것은 단지 비교적 간단한 일에 대한 지독 자세한 것, 그리고 내가 분명 뭔가 빠진 것 같은이 느낌은.

nil-coalescing 연산자를 사용하면 동일한 유형의 기본값을 제공해야하므로 작동하지 않습니다.

답변

4

당신은 같은 어떤 것을 쓸 수 있습니다 :

let statusCodeString = statusCode?.description ?? "None" 

을 또는 당신은 재산 description이없는 일부 유형의 작업 할 경우 : 특히 일반적인 사용을하지

let statusCodeString = statusCode.map{String(describing: $0)} ?? "None" 
+0

을 케이스. 감사! – Cognitio

+0

'.map {String (describe : $ 0)}''보다 간단하게'.map (String.init (descriptions :))' – Alexander

+0

@Alexander, 감사합니다. 그러나 그것은 나의 취향이고 내 것은 당신보다 2 문자 적습니다. – OOPer