如何实现NSFetchedResultsControllerDelegate的默认值

时间:2012-01-09 12:07:45

标签: objective-c ios cocoa-touch core-data

如何使用默认实现将上述协议实现到现有的viewcontroller?

由于

2 个答案:

答案 0 :(得分:0)

协议是一种影响另一个类的实例的动作的方式,或者当另一个类的实例即将做某事,正在做某事或做了某事时被告知。

要更改该类实例的行为,您可以将一个对象(有时是实例化该类的对象)指定为其委托,然后在实例到达您可以影响它或它想要的点时让你知道它将检查它是否有一个委托,然后看看该委托是否甚至想要该消息(即委托实现该委托方法)。如果两者都为真,则发送协议中定义的消息。

NSFetchedResultsControllerDelegate协议有5个你可以实现:

响应变更

– controllerWillChangeContent:
– controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
– controller:didChangeSection:atIndex:forChangeType:
– controllerDidChangeContent:

自定义栏目名称

– controller:sectionIndexTitleForSectionName:

这些都不是@required来实现协议所以如果你说你的类符合<NSFetchedResultsControllerDelegate>那么“默认实现”就是不实现任何这些方法,但你可能不会在这种情况下,根本设置一个代表。

如果你提供一些关于你想要完成的事情的更多细节,我们可以帮助你。

答案 1 :(得分:0)

你的问题对我来说似乎有点不清楚 - jackslash的答案是解释“默认实施”的一种方式(并且是一个很好的答案)。但我怀疑你可能反而意味着“我如何实现NSFetchedResultsControllerDelegate协议,以便用户看到相同的标准表格视图行为(例如编辑,删除,插入,重新排序的动画)其他应用?”

如果是这样的话......事实上,如果你是从头开始,那么从协议文档中可以直截了当。

但你不必从头开始。我建议您直接从Xcode 4.3中的模板中查找代码:使用 Master-Detail Application 模板制作新应用,并确保选中使用核心数据,该项目将包含一个表视图控制器,该协议的实现可能很好地处理您需要的所有内容。

再次,详细了解一下您所追求的结果,以及您已经探索过的途径,可以帮助我们更好地回答您的问题。