Использование NSSegmentedControl с CoreData

У меня есть приложение Core Data, которое работает для добавления или удаления одного из множества назначений клиента с помощью кнопок, привязанных в IB к моим назначениям ArrayController. Содержание встреч происходит от того, какой клиент выбран в списке каналов. Я хочу использовать SegmentedControl, и, насколько я могу судить, для этого требуется, чтобы я программно добавлял и удалял объекты во встречах. Мне удалось добавить встречу, используя код Маркуса Зарры из его книги "Основные данные" на стр. 54, но я затрудняюсь удалить выбранное назначение. Я использую пользовательскую ячейку таблицы, которая, как я подозреваю, может осложнить ситуацию.

Короче говоря, я хочу программно достичь эквивалента метода ArrayController remove: для выбранного объекта.

Может кто-нибудь помочь, пожалуйста?

2 ответа

Решение

Получите текущий выбор от вашего ArrayController, привязанного к вашему интерфейсу

- (NSArray *)selectedObjects

удалить эти объекты, используя контекст

-(void) deleteObject:(NSManagedObject*) object

Образец:

NSArray* objectsToDelete = [NSArray arrayWithArray:[arrayController selectedObject]];
for (NSManagedObject* objectToDelete in objectsToDelete)
{
  [arrayController.managedObjectContext deleteObject:objectToDelete];
}

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

-(IBAction) notesEditorSegClicked:(id)sender{
    int clickedSegment = [sender selectedSegment];
    switch (clickedSegment) {
        case 0:{ // add new object
            NSManagedObject *newNote = [NSEntityDescription
            insertNewObjectForEntityForName:@"Note"
            inManagedObjectContext:notes.managedObjectContext];
            [notes addObject:newNote];
            break;
        }
        case 1:{ // delete selected object
            NSArray *objectsToDelete = [notes selectedObjects];
            for (NSManagedObject* objectToDelete in objectsToDelete){
                [notes.managedObjectContext deleteObject:objectToDelete];
            }
            break;
        }
        case 2:{// close view
            [self loadClientSummary:sender];
            break;
        }
    }
}
Другие вопросы по тегам