1

私はAppDelegateから開始コアデータのデータベースを持っており、そこに私はこれをやる:アクセス

MasterViewController *masterViewController = [[[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil] autorelease]; 

masterViewController.managedObjectContext = self.managedObjectContext; 

ので、このように私は、データベースにアクセスすることができますマスタービューは、その後、私は他のクラスの中核データにアクセスしたい、と私はこれを行う:

id delegateContext = [[UIApplication sharedApplication] delegate]; 

NSManagedObjectContext *context = [delegateContext managedObjectContext]; 

が、私は追加して、情報にアクセスするとき、私は、様々な部分でいくつかの悪いEXCアクセスやその他のエラーを持っていますコードは、私はデータベースの情報にアクセスしようとすると、おそらく私は悪い方法で使用していると思う他のクラスからの情報にアクセスするために使用することができます。

たぶん私は...私はそれを使用している任意のクラスでそれを解放していない?delegatecontextを解放しなければならない、と私はそれを解放している場合、私はそれを行う場所がありますか?

誰でも私を助けることができますか?

+0

更新の回答でAppdelegate

 AppDelegate *app; 

のインスタンスを作成します。チェックしてください。 –

答えて

0

問題ではなく、idのdelegateContextを受け取り、これら2行の*contextに割り当てています。あなたが保存またはアクセスmanagedObjectContext、そのnilYES場合はAppdelegateからそれをコピーした場合、それを確認する必要がある時はいつでもこれらの行を追加することについてどのように

id delegateContext = [[UIApplication sharedApplication] delegate]; 
NSManagedObjectContext *context = [delegateContext managedObjectContext]; 

if (managedObjectContext == nil) 
{ 
    managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
    NSLog(@"After managedObjectContext: %@", managedObjectContext); 
} 

これらの2行を削除して、私が提案している場合は上記を追加してください。うまくいくはずです。

更新1:あなたが求めていると私はグローバル・プロパティにアクセスするために Appdelegateのインスタンスを作成するための手順を言及しています。 @implementation

 #import "AppDelegate.h" 

viewDidLoad方法...

 app=(AppDelegate *)[[UIApplication sharedApplication]delegate]; 
+0

あなたの答えに感謝します。ですから、私は、.hファイルでmanagedObjectContextを宣言し、deallocメソッドでそれをリリースしなければなりませんか? – Piero

+0

あなたがコアデータを使用することを決めるところでは、すべてのクラスで、.hファイルで 'managedObjectContext'を宣言し、.mファイルで合成してdeallocします。 –

+0

大変ありがとうございます!今夜は私が試してみましたが、今私は答えを受け入れています:) – Piero