このviewControllerがあるとしましょう
public class DetailsViewController : UITableViewController
{
public var text : String;
public override func viewDidLoad ( )
{
// do something with text
}
}
そして、セグエを介して前のコントローラーをプッシュするこの別のコントローラーがあります
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 をインスタンス化しないため、「テキスト」が設定されることは保証できません。だから私はそれを「文字列?」と宣言することができますか?または「文字列!」。
"String?": ".text?" と書く必要があります。ビューでDidLoad。MainViewController がプロパティを設定しない場合、テキストが欠落しているビューが表示される可能性があります。
"String!": コードは単純ですが、MainViewController がプロパティを設定しないとアプリがクラッシュします。
エラーが発生した場合に最適なオプションはどれですか?不完全なビューを表示するか、クラッシュしてエラー ログを取得しますか? 最後の 1 つはユーザーにとって不快ですが、特に開発時のバグ追跡に役立ちます。
「String?」を使用するのが良い解決策だと思います。assert() を使用すると、アプリは開発時にのみクラッシュします。他の提案?