在CoreData

时间:2017-08-09 13:56:47

标签: ios swift core-data nsfetchedresultscontroller

我有一个快速(或一般的iOS)问题:

我的情景:

我有一张桌子,每个单元格中都有头像(以及其他内容)。每个头像都有一个存在(可用/不可用)。每个单元格中其他内容的数据源不受CoreData支持(这是一个限制),并且与用户(在CoreData中 )之间没有关系,提供了头像照片和状态。

所以我让我的头像成为一个视图,它吸引用户,然后呈现用户的照片和存在。当用户(在CoreData中)的存在改变时,需要通知视图,以便它可以更新化身上的存在指示符。 (不要担心我的代码结构,我正在使用MVC,但我简化了一些事情以避免对我的场景进行长时间的描述。)

我的问题:

使用NSFetchedResultsController(FRC)观察CoreData中的单个条目是不是很糟糕?还有其他更适合这种情况的东西(因为NSFetchedResultsController非常适合表视图)吗?

基本上我要做的是让头像使用FRC来监听CoreData中其用户的更改。因此,每个单元格中的每个化身都有一个观察1个用户的FRC。我这样使用FRC似乎很奇怪。 (不要担心小区重用,当化身重新使用时,所有FRC也将被处理掉。)

其他选项:

我可以在我的用户CoreData存储管理器对象上设置一个观察者(委托)来监听对特定用户的更改(存储管理器用于更新CoreData中的条目,因此对CoreData用户实体的所有更新都会通过然后当观察者听到变化时,它可以通知与该用户相关的代表(这将是化身)。但这基本上就像制作我自己的FRC一样。并且表格中的单元格重用会变得复杂(因为每个化身都在表格的单元格中),因为我不得不经常注册/取消注册委托。

我可以在用户存储的MOC上收听有关更改的任何通知(例如NSManagedObjectContextObjectsDidChange),但随后我会对每个用户进行更改并且必须进行过滤。而且,我觉得这与重新实现FRC类似,但可能效率较低,而且我可能也会遇到细胞重用的复杂性。

要点:

我只想获得有关监听数据库中唯一(按用户ID)条目更改的最佳方法的建议。 FRC是最好的方式,还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

如果您有对User模型对象的引用,则可以对其属性进行KVO。