2014-12-27 6 views
2

역 지오 로케이션에 CLGeocoder을 사용 중이며 CLPlacemark의 배열을 얻습니다. 미국 이외의 지역 (예 : -27,127)의 GPS를 사용하고 placemark.postalCode에 액세스하면 앱이 다음과 같이 충돌합니다.Swift에서 CLPlacemark 충돌이 발생했습니다.

"치명적인 오류 : 선택 값을 언 래핑하는 동안 예기치 않게 nil이 발견되었습니다."

placemark.postalCodenil이며 우편 번호를 사용할 수없는 것 같습니다. 그러나 스위프트의 postalCode 반환 유형은 String!입니다 : 충돌이 postalCode의 게터에 의해 발생하기 때문에

var postalCode: String! { get } // zip code, eg. 95014

그래서 심지어 시험, nil입니다 수 있습니다.

이 충돌을 방지하는 방법에 대한 아이디어가 있으십니까? 고맙습니다!

답변

4

암시 적으로 풀어하더라도, 옵션 인, 당신이 전무을 위해 그것을 확인할 수 있습니다

if placemark.postalCode != nil { 

} 

를 앱이 그것 때문에 :)

이 그것을 증명의 충돌하지 않습니다, 그냥이 시도 놀이터에서 2 개의 암시 적으로 랩핑되지 않은 속성 (계산 된 값과 저장된 값)은 무효로 검사됩니다.

struct Test { 
    var nilComputed: String! { return nil } 
    var nilStored: String! = nil 
} 

var test = Test() 

if test.nilComputed != nil { 
    print("It's not nil") 
} else { 
    print("It's nil") 
} 

if test.nilStored != nil { 
    print("It's not nil") 
} else { 
    print("It's nil") 
} 
+0

물론, 맞습니다. 나는 이것을 깨닫지 못했다. 고맙습니다! – VojtaStavik