У меня проблема с некоторыми объектами Core Data, которые как-то признаны недействительными.
Контекст управляемого объекта находится в делегате приложения, и я использую его в таблице представлений для извлечения объектов «заметок» из базы данных и их отображения.
Я строю массив для разделов (сегодня, вчера и т. Д.), А для каждого раздела - массив с примечаниями в этом разделе:
// 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 заметок (остальные не помещаются в представлении), и все в порядке. Но когда я прокручиваю вниз, чтобы просмотреть следующие заметки, я получаю
NSObjectInaccessibleException NSManagedObject с идентификатором ... признан недействительным.
Это происходит для всех объектов в массиве.
Как это возможно? Я проверил и не сбрасывать / освобождать контекст. Или плохо хранить объект Core Data и обращаться к нему позже?
Редактировать: похоже, это также происходит, если я не выполняю прокрутку и хочу отображать сведения о заметке, когда она выбрана. Похоже, что как только отображаются первые заметки, они становятся недействительными.