Использование 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;
}
}
}