이전 ViewController에서 전달 된 비 선택적 속성이있는 Swift ViewController를 어떻게 초기화합니까?위의 ViewController에서 전달 된 비 선택적 속성이있는 Swift ViewController를 초기화하는 방법은 무엇입니까?
가정하십시오 : 모든 viewControllers가 mainStoryboard과 비 선택적인 속성은 부모의 prepareForSegue 방법에 childViewController로 설정되어 있는지 연결되어 있는지
. ChildVC가이 모델 객체없는 일이 할 수 없기 때문에
class ParentVC{
override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "playlistsSegue" {
let vc = (segue.destination as! PlaylistsVC)
vc.set = attachedSet
vc.title = attachedSet?.name
}
}
}
세트 속성은 비 선택해야합니다. 문제의 부동산을 선택 사항으로 사용하게되어서 분리에 시간이 걸리는 버그가 발생했습니다. segue 패턴이 항상 나타나기 때문에 초기화 문제의 일부로이 속성을 강제 설정하면 현재와 미래에 피할 수 있습니다.
class ChildVC{
var set:ModelObject
}
을 스토리 보드를 사용할 때 당신은 할 수 없습니다, 그래서 당신은 당신의 자신의 이니셜 라이저를 사용할 수 없습니다 속성이 아닌 선택 사항입니다. 일반적으로 암시 적으로 unwrap 된 선택 사항을 만들고'viewDidLoad'에'assert (object! = nil)'을 추가하여보기 컨트롤러를 표시하기 전에 설정을 잊어 버리면 즉시 알 수 있습니다. – dan
암시 적으로 랩핑되지 않은 옵션이 작동하지 않습니까? 시피, 컴파일 오류를 표시하는 대신 프로그램을 중단 시키지만 프로그램에 오류가 없음을 알려야합니다. – orccrusher99
네, 단지'var set : ModelObject! '로 선언하십시오. – Paulw11