2013-08-08 2 views
0

Я хочу удалить объект coreData из другого представления с условием if.Удалить объект coreData из другого представления

Так в viewControllerA есть предприятие Купить используется с атрибутом CellName. И viewControllerB содержит таблицуView и объект coreData Список. Когда пользователь удаляет ячейку в viewControllerB, объект viewControllerA, который имеет cellName (viewControllerA) = имя удаленной ячейки (viewControllerB), также должен быть удален. Может быть, кто-то может мне помочь ...

+0

Там может быть что-то я здесь отсутствует но вы, вероятно, могли бы просто зарегистрировать VCA для уведомления, а VCB отправит уведомление, когда основные данные будут обновлены, тогда VCA может просто обновить и поднять новое состояние основных данных. – rooster117

+0

Я мог бы быть ... но поскольку я очень новый для всего этого, я мало знаю о coreData, уведомлении, ... может быть, вы можете дать мне пример кода, и я попробую его – user2650439

ответ

1

Есть, вероятно, несколько вариантов, включая пользовательский делегат, но возможность начать бы с помощью уведомлений

В вашем viewControllerA вы регистрируетесь бы для уведомления в viewWillAppear или viewDidLoad :

[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(shouldUpdateDisplay:) 
    name:@"SHOULD_UPDATE_DISPLAY" 
    object:nil]; 

Примечание: в методе dealloc вы должны удалить себя от наблюдателя:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

Затем реализовать метод:

- (void) shouldUpdateDisplay:(NSNotification *) notification 
{ 
    [_table reloadData]; // do your updates 
} 

В VCB вы бы отправить это уведомление, когда элемент был удален, а другой контроллер представления должен знать об этом:

[[NSNotificationCenter defaultCenter] 
    postNotificationName:@"SHOULD_UPDATE_DISPLAY" 
    object:self]; 
+0

Я попытался удалить все объекты в VCA при отправке уведомления: '- (void) shouldUpdateDisplay: (NSNotification *) уведомление { NSManagedObjectContext * context = [self managedObjectContext]; for (int i = 0; i <[self.list count] -1; i ++) { [контекст deleteObject: [self.list objectAtIndex: i]]; [self.tableView reloadData]; // сделаем ваши обновления } } '} Но это не сработает – user2650439

+0

Невозможно, чтобы я помог вам точно описать информацию, которую вы указали. Я бы просто удостоверился, что вы сначала вызываете эту функцию правильно. Является ли viewcontroller, который необходимо обновить, когда это уведомление получено? – rooster117

+0

Да ... viewController, который отправляет уведомление, является видимым, тот, который его получает, невидим. – user2650439

Смежные вопросы