Я использую Xcode 4.2 и iOS SDK 5.0, а также шаблон приложения Apple Master-Detail для iPad с Core Data. Это похоже на пример кода «Местоположения». Мне удалось передать контекст управляемого объекта (MOC) из MasterViewController (MVC) в DetailViewController (DVC). Контроллер подробного представления принимает ввод от пользователя в некоторых текстовых полях и сохраняет его в основных данных; эта часть работает как шарм. Теперь у меня есть ActionViewController (AVC), представляющий собой всплывающее представление, которое должно позволять пользователю отправлять по электронной почте все данные в MOC, если они того пожелают. Однако при попытке выполнить выборку я получаю SIGABRT. Я использовал точки останова, чтобы точно определить, где:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//Fetch the crosses
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event"
inManagedObjectContext:context];
[fetchRequest setEntity:entity]; // Where it crashes
//Other code
}
Кроме того, в отладчике я вижу, что указатель контекста * имеет значение 0x0, что, как я предполагаю, означает, что его там нет?
То, как я заставил MVC передать MOC, было таким:
// Pass the managedObjectContext to the DetailViewController as a property
_detailViewController.managedObjectContext = self.managedObjectContext;
//Pass the MOC to the actionViewController
_actionViewController.managedObjectContext = self.managedObjectContext;
Я просмотрел другие сообщения, и кажется, что передача MOC всем контроллерам представления из AppDelegate может быть подходящим способом, но я хотел выяснить, почему ввод данных работает для DVC, но вылетает при получении данных в AVC . Какую большую ошибку я совершил?
Исправлена ссылка на проект github: https://github.com/scottdaniel/fly_punnett