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的主要内容,如果未能解决你的问题,请参考以下文章