gpt4 book ai didi

ios - 如何初始化具有从前面的 ViewController 传递的非可选属性的 Swift ViewController?

转载 作者:行者123 更新时间:2023-11-28 08:31:48 25 4
gpt4 key购买 nike

如何初始化一个 Swift ViewController,它具有从前面的 ViewController 传递的非可选属性?

请假设:

所有 viewController 都在 mainStoryboard 中连接,并且在父级的 prepareForSegue 方法中将非可选属性设置为 childViewController。

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
}
}
}

set 属性应该是非可选的,因为没有这个模型对象,ChildVC 就不能做它的事情。我将它作为可选属性与相关属性一起使用,这导致了一个需要一些时间才能隔离的错误。通过强制将此属性设置为初始化的一部分,现在和将来都可以避免麻烦,因为 segue 模式一直都会出现。

class ChildVC{
var set:ModelObject
}

最佳答案

声明 var set: ModelObject! 将为您提供非可选属性。同时让您自己设置属性。但是警告,如果你在设置它之前使用该属性(这不太可能看到你在 prepareForSegue 中设置:你的程序会崩溃!所以像 @dan 建议的那样做一个断言将是一个安全的测试,以确保你之前设置你的变量使用它。

class ChildVC{
var set:ModelObject!

override func viewDidLoad() {
super.viewDidLoad()

assert(set != nil)

}

}

然后你就可以只把你的代码放在 parentVC 中的 prepareForSegue: 中了。

关于ios - 如何初始化具有从前面的 ViewController 传递的非可选属性的 Swift ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38729868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com