Swift로 작성된 유니버설 iOS 8 앱으로 모든 기기의 스토리 보드를 공유합니다. 아이폰에서는 잘 돌아 간다. 그러나 iPad에서는 "세부 정보 표시"를 수행하려고하면 충돌이 발생합니다. 특히 내가 체크했을 때 prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
의 구현에서 nil 포인터를 역 참조하려고하면 충돌이 발생합니다. if segue.identifier == "ShowDetail"
Swift + Storyboards : iPad에서 segue.identifier 충돌 (iPhone ok)
왜 이런 일이 발생할 수 있는지 생각해보십시오.
'var identifier : String!'과 같이 선언 된 속성은 암시 적으로 unwrapped되지 않습니까? 선언이 어떤 시점에서 변경된 것처럼 느껴지지만 변경을 찾을 수 없습니다. 암시 적으로 래핑되지 않은 표준 옵션으로 선언 된 경우이를 테스트 할 수 있지만 Swift는 적합하다고 생각하지 않습니다. –
놀이터에'var identifier : String!'을 넣고 다른 문자열과 동등성을 테스트하면 에러가납니다. 암시 적으로 unwrapped 된 프로퍼티로 선언 된 어떤 것은 사용하기 전에 값을 가져야 만하고 그 값은 무효가 될 수 없습니다. – Caroline
맞아, 내가 말하는 것은 UIStoryboardSegue가'identifier '를'var identifier : String!'대신'var identifier : String' (비 선택적)으로 선언한다는 것이다. *해야한다). 그러나 실제로는 어떤 경우에는 여전히 'nil'이며, 따라서 문제의 핵심은 선택 사항이 아닌 속성의 값이 아닙니다. –