2017-08-09 53 views
1

我有一个快速的(或一般的iOS)问题1个单一入口已取得的结果控制器:使用在CoreData

我的情景:

我有了化身(除其他事项外的表)在每个单元格中。每个头像都有一个存在(可用/不可用)。每个单元中其他内容的数据源不受CoreData支持(这是一个限制),并且与用户(CoreData中的)没有关系,该用户提供了头像照片和呈现。

因此,我将我的头像视为一个需要用户,然后呈现用户的照片和呈现的视图。当用户(在CoreData中)的状态变化时,需要通知该视图,以便它可以更新化身上的状态指示符。 (不要担心我的代码结构,我使用MVC,但是我简化了一些东西以避免对我的场景做长时间描述)。

我的问题:

是不是不好用NSFetchedResultsController(FRC)观察CoreData 1个单一入口?是否还有其他更适合于此的内容(因为NSFetchedResultsController非常适合用于表格视图)?

基本上我会做的是让头像使用FRC来侦听CoreData中用户的变化。因此每个单元格中的每个化身都会有一个观察1个用户的FRC。这样使用FRC似乎很奇怪。 (不要担心细胞重复使用,当化身处于细胞再利用状态时,所有的FRC都会被处置)。

其他选项:

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

我能听用户存储的MOC的任何通知有关变更(如NSManagedObjectContextObjectsDidChange),但我会得到用户更改,并进行筛选。再次,我觉得这与重新实现FRC很相似,但可能效率较低,而且我也可能会遇到单元重用的复杂性。

摘要:

我只是想的最佳方式的意见,听取更改数据库中的一个独特的(用户ID)项。 FRC是最好的方式,还是有更好的方法?

回答

1

如果您有对用户模型对象的引用,则可以在其属性上使用KVO。