2009-03-19 10 views
1

ビュー間でデータを共有することについての質問があります。私は、(Object1、Object2、Object3)とappDelegateにNSMutableArrayを持っています。新しいObjectが作成され、配列に追加されると、次のビューでそのObjectにアクセスする必要があります。以前はオブジェクトを次のビューに渡していましたが、それは乱雑になり、間違っていました。App Delegateを通じてビュー間でデータを共有する

私はすべてのオブジェクトを1か所に持っていますが、どのインデックスに追加されたのかわからないため、次のビューでオブジェクトにアクセスするにはどうすればいいですか?オブジェクトを作成するたびに配列の数をチェックし、それから配列インデックスを決定し、そのインデックス値を次のビューに渡す必要がありますか?または、ある種の一意の名前でNSMutable配列からオブジェクトを取得する方法はありますか?

もう1つの解決策は、私が望むものが見つかるまで、すべてのオブジェクトを反復することですが、これを行う正しい方法が何か不思議です。あなたの時間をありがとう。

編集:返信いただきありがとうございます。私がしようとしていることを明確にします。私はNavigationControllerを持っており、あなたが行く各ビューにはObjectへのアクセスが必要です。あなたは本のようにそれについて考えることができます。あなたが読んでみたい本を最初に選択すると、次に選択した本のページが表示されます。 App Delegateには、すべての書籍の配列があります。それぞれの "ページ"に本を見に行くのですか?

これは大まかな例です。書籍を選択すると、その書籍のインデックスを既に知っているためです。あなたが本を作成したら、それがまだどこにあるのかわからないとしましょう。

答えて

3

これらのオブジェクトごとに意味のある一意の名前を作成できる場合は、NSMutableDictionaryを使用し、そのキーを指定してコントローラにデータを取得させます。ように:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
NSString *obj = [appDelegate.dict objectForKey:@"unique-name-here"]; 

希望に役立ちます。

+0

これは私が本当に探しているものだと思います。ありがとうございました! – Sean

+0

複数の方法で複数の場所からデータにアクセスする場合は、次のような手順を使用して、クラス全体に対してこれを定義することができます。http://www.friendlydeveloper.com/2010/02/getting -applelegate-access-from-anywhere-from-your-project-coding/ – geerlingguy

+0

アプリケーションデリゲートを使用してデータを配信することは危険です。この記事を参照してください:http://www.hollance.com/2012/02/dont-abuse-the-app-delegate/代わりに、NSNotificationまたは委任を使用して、オブジェクトが更新されたという依存ビューを警告することをお勧めします。 –

2

異なるコントロール間でオブジェクトを共有することについて話しているのか、マスターディテールビューのような異なるビューコントローラーについて話しているのかは分かりませんが、これはあなたが意味するものと思われます。

この場合、単一のオブジェクトの編集専用の詳細ビューがある場合は、ビューコントローラに編集するオブジェクトを与えるのは間違っていません。配列を維持している場合でも、新しいオブジェクトを配列に追加して、オブジェクトを新しいView Controllerに割り当ててから画面に配置することができます。

アプリケーションの仕組みについてもう少し具体的な内容があれば、より良いヘルプを提供することができます。

+0

アレックスが私の意図を解読しようとしてくれてくれてありがとう。私はいくつかの説明を加えましたが、NSMutableDictionaryがその仕事をすると思います。 – Sean