NSFetchedResultController没有看到对象的变化"两个关系"远

时间:2016-07-14 14:52:59

标签: ios core-data nsfetchedresultscontroller

我已设置以下谓词:

fetchRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [
    NSPredicate(format: "start >= %@", NSDate.init(timeIntervalSinceNow: 0).dateByRemovingTime()),
    NSPredicate(format: "product.filter.enabled == %@", true)
])

获取请求的实体是Activity,然后包含产品。然后每个产品都有一个过滤器,可以启用或禁用。

布尔enabled改变后是否应该重新加载?

如果没有:我该如何触发?更改willChangeValueForKey时会didChangeValueForKeyenabled

1 个答案:

答案 0 :(得分:0)

NSFetchedResultController是一个KVO控制器,它只能监视已在控制器中获取的数据,或者在获取控制器后插入。如果更新控制器中没有的数据或更新数据的关系数据,控制器将不会调用代理或KVO观察。 有两种方法可以解决问题: 1.您可以在实体中添加BOOL属性,例如“hasChanged”,如果关系数据已更改,则更改“hasChanged”。 2.您可以在关系数据上添加KVO