2016-03-24 8 views
0

異なるコントローラの辞書が同じメモリ位置を指すように、他のコントローラに渡すことができる可変ディクショナリを作成したいと思います。別のコントローラで値を変更すると、それも以前のコントローラに反映されます。 このトリックは、デリゲートを使用せずにNSMutableDictionaryで正常に動作するために使用されました。Swiftで手書きディクショナリを作成

私の辞書には、型のものである:[文字列:ANYOBJECT]

答えて

2

スウィフトコレクションは、値型であるタイプを参照しないと、あなたが参照によって値型を渡すことができますが、それが唯一のコールの生涯続きます。

あなたがやっていることは、デザインが悪いとみなされます。オブジェクトは主権、明確なインターフェース、カプセル化状態です。彼らは非公式に状態をプールしません。

おそらく必要なことは、共有状態を取得し、インターフェイスを正式化してモデルに移動することです。各コントローラーはあなたのモデルとは別々に話すことができます。

+0

モデルを作成するか代理人を使用する方が良いですか? –

+0

私はすべてのコントローラからアクセスできる静的な変数を持つクラスに行きます。 – Thomas

+0

@トーマス情報は2つのクラスでのみ共有されます。 –

0

Swiftの辞書型は値型ですが、古いNSMutableDictionaryインスタンスは参照型です。

古い辞書の代わりにSwiftの値型を使用しなければならないということは何もありません。辞書で参照セマンティクスを使用する正当な理由がある場合は、それをNSMutableDictionaryとしてそのまま残し、そのクラスのメソッドを使用して操作します。 NSMutableDictionaryを明示的にを使用していることをコード内にメモしてください。の参照セマンティクスが必要です。

関連する問題