본문 바로가기
Xcode/ERROR

ERROR ) StoryBoard - Fatal error: Unexpectedly found nil while unwrapping an Optional value

by 후르륵짭짭 2020. 12. 17.
728x90
반응형

안녕하세요 후르륵짭짭 입니다.

이번에는 found nil while unwrapping an Optional Value 에 대해서 알아보도록 하겠습니다.

var liveItems : [liveModel]? {
        didSet{
            
            if liveItems?.isEmpty == true {
                noserviceClosure = {
                    UIView.animate(withDuration: 0) {
                        self.noLiveView.alpha = 1
                    }
                }
            }
            else{
                
                headerViewItem = liveItems![0].data[0]
                
                liveItems![0].data.removeFirst()
                
                DispatchQueue.main.async { [weak self] in
                    self?.liveCollectionView.reloadData()
                }
            }
        }
    }

 

저는 Segue로 이전 뷰에서 liveItems에게 데이터를 보내줬습니다.

그런데 만약 liveItem의 데이터가 비어있다면 

View의 alpha를 1로 바꿔주도록 하는 것인데,,, 여기서 위와 같은 오류가 발생했습니다.

왜인고,,, 생각해보니깐.

 

Segue로 데이터를 보낼 경우에는 다음 View의 Layer들이 생성 되기 전이였습니다.

따라서 View를 변경하고 싶은데, View가 아직 생성되기 전에 VIew에 접근하기 때문에 nil이 발생한 것이 였습니다.

 

저는 이러한 문제를 해결하기 위해 

var noserviceClosure : (()->())?

이렇게 클로저를 만들어줘서 VIewDidLayoutSubVIew 시점에 작동하도록 만들었습니다.

  override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        noserviceClosure?()
    }

이러니깐, 원하는 방식대로 잘 됐습니다.

 

요약하자면!

ViewDIdLoad() 시점 이전에 VIew를 구성하려고 할 때, 생기는 오류 입니다!

 

참고 사이트 : 

medium.com/@twih1203/swift-fatal-error-unexpectedly-found-nil-while-unwrapping-an-optional-value-28305b399d76

 

[Swift] Fatal error: Unexpectedly found nil while unwrapping an Optional value

안녕하세요 에밀리입니다

medium.com

 

728x90
반응형

댓글