将NSSegmentedControl与CoreData一起使用

时间:2010-06-25 10:15:28

标签: cocoa core-data interface-builder nsarraycontroller nssegmentedcontrol

我有一个Core Data应用程序,用于添加或删除客户端的许多约会之一,其中的按钮绑定在我的约会ArrayController中。约会内容源自在Feed列表中选择的任何客户端。 我希望使用SegmentedControl,据我所知,这需要我以编程方式添加和删除约会中的对象。我已经成功地使用Marcus Zarra的代码从他的书籍核心数据p54上添加了一个约会,但我无法删除一个选定的约会。我正在使用自定义表格单元格,我怀疑这可能使问题复杂化。

简而言之,我希望以编程方式在所选对象上实现ArrayController的remove:方法。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

谢谢,马丁。我的代码最终看起来像这样。

-(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;
        }
    }
}

答案 1 :(得分:0)

获取绑定到UI

的ArrayController的当前选择
- (NSArray *)selectedObjects

使用上下文删除这些对象

-(void) deleteObject:(NSManagedObject*) object

样品:

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