假设我们有这个 viewController
public class DetailsViewController : UITableViewController
{
public var text : String;
public override func viewDidLoad ( )
{
// do something with text
}
}
我们有另一个控制器通过 segue 推送前一个控制器
public class MainViewController : UITableViewController
{
...
public override func prepareForSegue ( segue : UIStoryboardSegue, sender : AnyObject? )
{
if ( segue.identifier == "detailsSegue" )
{
let selectPatientController = segue.destinationViewController as! DetailsViewController;
selectPatientController.text = "I'm Iron Man";
}
}
}
由于 MainViewController 没有实例化 DetailsViewController,我不能保证会设置“文本”。所以我可以将它声明为“字符串?” 或“字符串!”。
“字符串?”:我必须写“.text?” 在 viewDidLoad 中。如果 MainViewController 没有设置该属性,我可能会有一个缺少文本的视图。
“String!”:更简单的代码,但如果 MainViewController 未设置该属性,应用程序会崩溃。
对于可能出现的错误,最好的选择是什么:显示不完整的视图或崩溃并获取错误日志?最后一个对用户来说是不愉快的,但它有助于跟踪错误,特别是在开发时。
我认为一个好的解决方案是使用“字符串?” 使用 assert(),然后应用程序只会在开发时崩溃。其他建议?