2009-09-02 7 views

答えて

2

シングルトンの代わりに、アプリケーションがアプリケーションのデリゲートでプロパティを作成し、アプリケーションの起動が完了したときに初期化することを検討してください。

ビューがインスタンス化されたときに、ビューコントローラでこのプロパティの値への参照をNSManagedObjectに設定します。

+0

オーケー、知っておくと便利thatsのが、複数のコントローラでnsmanagedobjectデータにアクセスしたいときは、何をする必要がありますか? – Ton

+1

コントローラに、アプリケーションデリゲートでインスタンス化した単一のインスタンスを指すNSManagedObject参照がある場合は、通常と同じように、そこからデータにアクセスできるはずです。 Cocoaのドキュメントはhttp://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProperties.html –

+1

をご覧ください。また、Core Dataチュートリアル、ビューコントローラの設定を順を追って説明します。http://developer.apple.com/IPhone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Articles/06_Deleting.html#//apple_ref/doc/uid/TP40008305-CH108-SW1 –

2

すでにNSManagedObjectContextを渡しています。これを使用して、いつでも必要なデータを取得できます。

コアデータがどのように反応してシングルトンインスタンスを作成するのか分かりません。 NSmanagedObjectは、NSObjectが行う初期化に同じメソッドを使用しません。

-awakeFromInsertと-awakeFromFetchを使用します。あなたはすでに問題があります。

Marcus Zarra(Core Data Guru)からarticleを参照してください。

要するに、新しいフェッチを実行して必要なデータを取得するだけで、そこでシングルトンを処理する必要はありません。

+0

私は何をする必要があります、私は複数のコントローラで使用する1つのデータセットがあります。 1つのコントローラがオブジェクトのデータを変更するときに、コントローラビューを更新する必要もあります。 – Ton

+0

モデルを変更した場合は、通知を送信してください。次に、あなたのView Controllerにこの通知を聞かせ、必要に応じてデータを再フェッチします。 –

+1

残念ながら、そのリンクはもう有効ではありません。 – ThomasW

0

これはシングルトンにする必要がある理由によって異なりますが、データにアクセスする必要があるすべてのエンティティに渡すのに問題がある場合は、シングルトンを使用することは良い解決策ではありません。それは通常、何かを解決するのではなく、より多くの問題を導入する。

あなたが同じオブジェクトに複数の編集を心配している場合は、コアデータは、それを処理するためのメカニズムを持っている、「コアデータ・プログラミング・ガイド」の「変更管理」の章を参照してください

+0

実際には、私は複数のコントローラでそのabjectの同じデータを使用し、stackoverflowの別の質問で、シングルトンを使用する必要があると回答しました。オブジェクトにrefを渡すのではなく、 – Ton

関連する問題