NSFetchedResultsController 中的 NSPredicate 不使用 Category 的 getter

Posted

技术标签:

【中文标题】NSFetchedResultsController 中的 NSPredicate 不使用 Category 的 getter【英文标题】:NSPredicate in NSFetchedResultsController doesn't use Category's getter 【发布时间】:2013-09-01 12:25:31 【问题描述】:

我有一个带有 int_32 属性的属性,称为 seconds。在一个类别中,我将属性重新声明为只读并覆盖 getter 以从其他属性创建它。问题是当我使用

[NSPredicate predicateWithFormat:@"SELF.seconds > %i"];

谓词不起作用,因为谓词没有调用 getter。在我的其他代码中调用它就好了,只是不在谓词中。任何人都知道为什么会发生这种情况或如何解决这个问题? (除了重新创建 NSFetchedResultsController)。

【问题讨论】:

您使用的是 SQLite 商店? 是的,我正在使用 SQLite。 【参考方案1】:

谓词转换为 SQL 并在存储上运行。它不运行您的任何代码。因此,您只能使用数据存储中的存储值。没有瞬态属性,没有方法。

如果您想在 fetch 中使用该属性,那么您应该保存该值。这可以通过实现willSave 并让它在保存任何其他值更改之前设置值来完成。

【讨论】:

以上是关于NSFetchedResultsController 中的 NSPredicate 不使用 Category 的 getter的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 应用程序中调用 performFetch 后,是不是需要手动更新表视图?