2017-12-29 56 views
1

私は初心者です。だから私のプロジェクトでは、私はほとんどすべてのコントローラで使用されている複数のオブジェクト/モデルを使用しています。私の質問は、コントローラのいずれかで更新されたときに、オブジェクト/モデルを(コントローラ全体で)自動的に更新する方法です。複数のコントローラ間でオブジェクト/モデルを更新する

これを実行する正しい方法は何でしょうか、それについてどうすればよいですか?

+1

コントローラ内のオブジェクトのオブザーバを追加し、メソッドを実装してviewController UIを更新する必要があります –

+0

同じモデルがどこでも使用されている場合、そのモデルのシネルトンオブジェクトを持たないのはなぜですか。このようにして、この変更をどこで修正しても、すべてのコントローラで変更を取得できます。これにより、追跡不可能なバグが発生する可能性があるため、要件を確認した場合にのみ実行してください。 –

+0

モデルの作成方法、モデルオブジェクトの使用方法、モデルの更新方法など、いくつかのコードを更新できますか? –

答えて

0

Pass By Value & Pass By Referenceという概念があります。

質問に最適な解決策は、Pass By Referenceタイプを使用することです。

Swift programming languageについて話してください。

classは参照型です& structはバリュータイプです。

したがって、モデルクラスはclassタイプで構築する必要があります。

コード例。

class Dog { 
    var breed : String = "" 
    var sub_breed = [String]() 
    init(_breed:String,_sub_breed:[String]) { 
     self.breed = _breed 
     self.sub_breed = _sub_breed 
    } 
} 

FirstViewController: 

var dogs : [Dog] = [Dog(_breed: “Original”, _sub_breed: [“subBreedType1”, “subBreedType2”])] 

SecondViewController: // You are passing reference of dogs to SecondVC 

var dogs : [Dog] = [] 

dogs[0].breed = “Modified” 

は今、あなたはあなたがこのアイデアを試すことができ、あなたが戻っFirstViewControllerに行くと、アレイのfirst elementをチェックすると値が“Modified”

なり、SecondViewControllerからbreed nameの値を変更しました。

その他のソリューション:のSingleton object

ありがとうございます。

関連する問題