У меня была такая же проблема, но только когда я попробовал что-то отличное от того, что я делал. Я не вижу код для подэлемента, но я предполагаю, что он имеет обратную ссылку на элемент. Давайте назовем это почитаемой ссылкой «parentItem», тогда самое простое решение:
Item *item = [NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:self.managedObjectContext];
item.name = @"FirstItem";
SubItem *subItem = [NSEntityDescription insertNewObjectForEntityForName:@"SubItem" inManagedObjectContext:self.managedObjectContext];
//[item addSubitemsObject:subItem];
subItem.parentItem = item;
В результате он использует собственный код Apple, и он прост и чист. Кроме того, набор автоматически добавляется, а все наблюдатели обновляются. Нет проблем.
Что ж, независимо от того, что вы в конечном итоге будете делать с выбранным значением, можно безопасно использовать событие SelectionChangeCommitted
.
Вот небольшая дополнительная информация об этом событии по сравнению с другими часто используемыми событиями. (из MSDN)
SelectionChangeCommitted вызван только когда пользователь меняет комбо коробка выбора. Не используй SelectedIndexChanged или SelectedValueChanged для захвата пользователя изменения, потому что эти события также поднимается при изменении выбора программно.
Обычно я использую событие SelectedIndexChanged
, чтобы проверить, когда пользователь выбирает значение в поле со списком