何らかの形で無効化されているコアデータオブジェクトに問題があります。 管理対象オブジェクトコンテキストは、アプリケーションデリゲートにあり、ビューテーブルで使用して、データベースから「メモ」オブジェクトをフェッチして表示します。 は、私はセクション(今日、昨日、など)のための配列を作成し、セクションごとに、このようなセクションでのノートの配列: コアデータオブジェクトが無効になる
// in the .h file
NSMutableArray* data; // An array containing an array of thoughts for each section.
@property (nonatomic, retain, readonly) NSManagedObjectContext* objectContext;
// in the .m file, when loading the view
ThoughtsAppDelegate* appDelegate = (ThoughtsAppDelegate*)[[UIApplication sharedApplication] delegate];
objectContext = appDelegate.managedObjectContext;
NSEntityDescription* descriptor = [[NSEntityDescription entityForName:@"Note"
inManagedObjectContext:objectContext] autorelease];
NSFetchRequest* request = [[NSFetchRequest alloc] init];
[request setEntity:descriptor];
NSError* error;
NSArray* notes = [objectContext executeFetchRequest:request error:&error];
// example for one section
data = [[NSMutableArray alloc] init];
NSMutableArray* ccurrentSection = [[NSMutableArray alloc] init];
[data addObject:currentSection];
for(Note* t in notes)
[currentSection addObject:t];
ビューが表示されている最初の5つのノートをロードし
(残りはビューに収まらない)、すべてがOKです。しかし、私が次のノートを見るためにスクロールすると、NSObjectInaccessibleException IDを持つNSManagedObjectが無効になっています。
これは、アレイ内のすべてのオブジェクトで発生します。
これはどのように可能ですか?私は、コンテキストをリセット/解除しないようにしました。あるいは、Core Dataオブジェクトを保存して後で参照するのは悪いですか?
編集:これは、スクロールせずにノートが選択されたときの詳細を表示したい場合にも発生します。すぐに最初の音符が表示されるように見えますが、その音符は無効になります。
managedObjectContextを保持する必要がありますか、またはアプリケーションの内部で行われたものですか?管理対象オブジェクトのコンテキストがなくなると、このエラーが発生する可能性があります。 – deanWombourne
アプリケーション代理人では、私はXcodeによって自動的に作成されたプロパティを持っています:@property(nonatomic、retain、readonly)NSManagedObjectContext * managedObjectContext;それは保持されるべきです。私はどこにでもリリースしないし、データベースを変更しない。 –