2016-06-02 3 views
0

units 매개 변수의 값에 따라 guard을 사용하여 화씨 또는 섭씨 온도를 언랩하고 싶습니다. 그러나, 나는 해결되지 않은 식별자 '온도'의조건문의 가드

사용에 대한 오류

let units = 0 

if units == 0 { 
    guard let temp = currentDict["temp_f"] as? String else { return nil } 
} else { 
    guard let temp = currentDict["temp_c"] as? String else { return nil } 
} 

guard이 예에서는 작동하지 않습니다 다음 예제 코드에서

를 얻을?

+0

어떻게 '정의 currentDict'되어 작동합니다? –

+0

@appzYourLife currentDict는 [String : AnyObject] – wigging

+0

의 사전입니다. 일부 코드가 누락 된 것으로 보입니다. 오류가 발생한 행을 포함하여 모든 관련 코드를 표시해야합니다. 귀하의 질문은 우리가 지금 당신이 의미하는 바를 추측하고 있기 때문에 더 이해하기 쉬울 것입니다. http://stackoverflow.com/help/how-to-ask – Cenny

답변

2

tempif 문에만 포함되어 있기 때문에 작동하지 않습니다. 이 대신에보십시오 : 다른 사람이 이미 말했듯이, 당신은 아마도 if/else의 범위 당신 temp 밖에없는 사용

let key = units == 0 ? "temp_f" : "temp_c" 
guard let temp = currentDict[key] as? String else { return nil } 
+0

나는이 접근법을 좋아하지만 첫 번째 행이 어떻게 작동 하는지를 명확히 할 수 있습니까? "?" 및 ":"문자 의미? – wigging

+2

[삼항 조건 연산자] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html#//apple_ref/doc/uid/TP40014097-CH6-ID71) 또는 더 일반적으로 인라인 if. 기본적으로'if units == 0 {key = "temp_f"} else {key = "temp_c"}' –

-1

if/else 문의 외부에서 임시 변수를 사용하고 있습니까? 이것이 문제의 원인 일 가능성이 큽니다.

1

?

이 코드는

func foo(units:Int) -> String? { 
    let result: String 
    if units == 0 { 
     guard let temp = currentDict["temp_f"] as? String else { return nil } 
     result = temp 
    } else { 
     guard let temp = currentDict["temp_c"] as? String else { return nil } 
     result = temp 
    } 
    return result 
}