NSPredicate 按仅存在于其中一个子类中的属性过滤掉结果
Posted
技术标签:
【中文标题】NSPredicate 按仅存在于其中一个子类中的属性过滤掉结果【英文标题】:NSPredicate to filter out results by property that exists only in one of the subclasses 【发布时间】:2016-01-26 06:13:18 【问题描述】:是否可以编写一个谓词,通过仅存在于其中一个子类(在 CoreData 中)中的属性过滤掉对象。
例如:
class MainClass: NSManagedObject
vars...
class Subclass1: MainClass
vars...
class Subclass2: MainClass
var isImportant: NSNumber
我想编写一个谓词,它会返回 MainClass
类型的对象,但会过滤掉属性 isImportant
设置为 false
的 Subclass2
对象。
因此,生成的对象数组应包括所有 MainClass
和 Subclass1
对象。但只有Subclass2
对象的isImportant
属性设置为true
。
我需要为 CoreData 中的NSFetchedResultsController
的获取请求编写类似的谓词。
【问题讨论】:
也许,这里的设计是错误的。你能解释一下你的实体会是什么样子吗? 【参考方案1】:https://www.objc.io/books/core-data/ 的第 3 章详细介绍了子实体,但基本上:您几乎不想使用它们。您可以在不使用子实体的情况下创建子类(就像您所做的那样)。这可能会解决您的问题。
【讨论】:
以上是关于NSPredicate 按仅存在于其中一个子类中的属性过滤掉结果的主要内容,如果未能解决你的问题,请参考以下文章
NSPredicate,CoreData 中的空格。如何修剪谓词?