DetailViewController не отображается при создании нового объекта - PullRequest
0 голосов
/ 02 января 2012

Быстрый вопрос, ребята ... Кнопка IBAction создает новый объект, но когда навигатор нажимает DetailViewController, он дает мне SIGABRT.Теперь мне интересно, если я просто не могу использовать функцию контроллера навигации там.Следующий код не работает правильно

- (IBAction)insertNewObject
{
// Create a new instance of the entity managed by the fetched results controller.
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];

Event *newEvent = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
DetailViewController *detailController = [[[DetailViewController alloc] init] autorelease];

[newEvent setValue:[NSDate date] forKey:@"timeStamp"];

// Save the context with the new object.
NSError *error = nil;
if (![context save:&error]) {
    //improve this
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

[detailController setEvent:newEvent];

NSLog(@"Detail Controller New Event 1 (from Master) : %@", newEvent);

[self.navigationController pushViewController:detailController animated:YES];
}

Теперь, когда я выбираю ячейку, она работает отлично.Поэтому приведенный ниже код работает:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"selectSegue"]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

    Event *event = (Event *)[fetchedResultsController objectAtIndexPath:indexPath];
    NSLog(@"Event on Master:: %@", event);

    DetailViewController *detailvc = [[[DetailViewController alloc] init] autorelease];

    detailvc.event = [self.fetchedResultsController objectAtIndexPath:indexPath];
    NSLog(@"Event on Detail when created :: %@", detailvc.event);

    if (event) [[segue destinationViewController] setEvent:(Event *) [self.fetchedResultsController objectAtIndexPath:indexPath]];  //was: setDetailItem:selectedObject
    [event release];
    [detailvc.event retain];

}
}

Такое ощущение, что я упускаю что-то простое.Но может ли кто-нибудь помочь мне добавить объект в этот DetailViewController, не получая SIGABRT?Спасибо и с Новым годом всех.

1 Ответ

0 голосов
/ 02 января 2012

Ваш код, кажется, все в порядке. Для моего опыта вы должны проверить, если вы установили все обязательные атрибуты для сущности. Потому что в некоторых случаях оператор Error не возражает против этой ошибки!

...