私は初心者です。だから私のプロジェクトでは、私はほとんどすべてのコントローラで使用されている複数のオブジェクト/モデルを使用しています。私の質問は、コントローラのいずれかで更新されたときに、オブジェクト/モデルを(コントローラ全体で)自動的に更新する方法です。複数のコントローラ間でオブジェクト/モデルを更新する
これを実行する正しい方法は何でしょうか、それについてどうすればよいですか?
私は初心者です。だから私のプロジェクトでは、私はほとんどすべてのコントローラで使用されている複数のオブジェクト/モデルを使用しています。私の質問は、コントローラのいずれかで更新されたときに、オブジェクト/モデルを(コントローラ全体で)自動的に更新する方法です。複数のコントローラ間でオブジェクト/モデルを更新する
これを実行する正しい方法は何でしょうか、それについてどうすればよいですか?
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
ありがとうございます。
コントローラ内のオブジェクトのオブザーバを追加し、メソッドを実装してviewController UIを更新する必要があります –
同じモデルがどこでも使用されている場合、そのモデルのシネルトンオブジェクトを持たないのはなぜですか。このようにして、この変更をどこで修正しても、すべてのコントローラで変更を取得できます。これにより、追跡不可能なバグが発生する可能性があるため、要件を確認した場合にのみ実行してください。 –
モデルの作成方法、モデルオブジェクトの使用方法、モデルの更新方法など、いくつかのコードを更新できますか? –