将 NSSegmentedControl 与 CoreData 一起使用

Posted

技术标签:

【中文标题】将 NSSegmentedControl 与 CoreData 一起使用【英文标题】:Using NSSegmentedControl with CoreData 【发布时间】:2010-06-25 10:15:28 【问题描述】:

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

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

有人可以帮忙吗?

【问题讨论】:

【参考方案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;
        
    

【讨论】:

【参考方案2】:

从绑定到 UI 的 ArrayController 中获取当前选择

- (NSArray *)selectedObjects

使用上下文删除那些对象

-(void) deleteObject:(NSManagedObject*) object

示例:

NSArray* objectsToDelete = [NSArray arrayWithArray:[arrayController selectedObject]];
for (NSManagedObject* objectToDelete in objectsToDelete)

  [arrayController.managedObjectContext deleteObject:objectToDelete];

【讨论】:

以上是关于将 NSSegmentedControl 与 CoreData 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Interface Builder Xcode 6.1.1 的 NSSegmentedControl 布局错误

osx中用于多选一可用NSSegmentedControl

text Divi按钮通常与文本一起缩放,看起来很糟糕。使用此CSS设置最小宽度 - 按钮将根据文本co放大

将子域转换为域名(子 TLD 与 TLD)

Angular - 错误类型错误:_co.timeIn 不是函数

数字(D)成像(I)与通讯(Co)