Использование NSSegmentedControl с CoreData - PullRequest
1 голос
/ 25 июня 2010

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

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

Ответы [ 2 ]

1 голос
/ 15 июля 2010

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

-(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;
        }
    }
}
0 голосов
/ 25 июня 2010

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

- (NSArray *)selectedObjects

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

-(void) deleteObject:(NSManagedObject*) object

Пример:

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