2017-06-25 4 views
0

私は2つのビュービューコントローラを持っています。一方は他方を継承する。 VC1は変数を持っているので、私はそのビューコントローラ内で突然変異を起こしたと言うことができます。 VC2はVC1を継承します。私はVC1の変数と同じになるようにVC2に別の変数を設定します。私は以下のオプションを試しましたが、オプション値エラーをアンラッピングしている間に、予期せず見つかったnilを常に返します。変数を空ではないと私は知っているので、VC1の値をそのまま出力することができます。 VC1からVC2に変数を正しく送信するためにコード内で調整する必要があるのは何ですか? VC1で変数を継承付きの第2ビューコントローラに渡す

:VC2で

var students: [Student]! 
func setmystud(changeme: [Student]) -> Void { 
     var mechangeme = changeme 
     mechangeme = students 
    } 

var mystudents: [Student]! 
override func viewDidLoad() { 

     super.setmystud(changeme: mystudents) 
     print(mystudents.count) //returns the error 
    //OTHER TRY// mystudents = super.students 
    } 

答えて

0

これは継承の誤解です。 VC2VC1から継承しているということは、同じプロパティを持つことを意味しますが、それらのプロパティの値が同じであることを意味するわけではありません。 VC1という2つのインスタンスがある場合、プロパティ値も共有されません。

VC2のインスタンスに値を設定する場合は、それらの値をVC2という特定のインスタンスに渡す必要があります。

クラスとインスタンスの違い、およびクラス継承の基本は、オブジェクト指向プログラミング(任意の言語)の基礎概念です。これに問題がある場合は、一時停止してOOPの基本を理解しておく必要があります。ほぼすべてのドキュメントは、すでにその背景を持っていることを前提としています。明らかな情報ではありません。それはあなたがすでにそれを学んだことを前提としています。

良い紹介はApp Development in Swiftです。これらの概念はレッスン12で紹介されています。