Ios 如何使用NSPredicate按CoreData中NSSet属性的元素筛选对象?

Ios 如何使用NSPredicate按CoreData中NSSet属性的元素筛选对象?,ios,swift,core-data,nspredicate,Ios,Swift,Core Data,Nspredicate,我有两个类,一个名为文件夹,另一个名为条目 在我的数据模型中,一个文件夹将包含多个条目,一个条目可以由不同的文件夹包含 因此,每个文件夹都有一个用于标识自身的folderID,以及一个名为entries的关系,该关系用于包含Entry实例。每个条目都有一个名为superFolders的反向关系,该关系指向包含它的文件夹 现在是我的问题。这里有一个文件夹ID。我想使用这个和NSFetchRequest来获取核心数据中这个特殊文件夹包含的所有条目。以下是主要代码: let fetchRequest

我有两个类,一个名为
文件夹
,另一个名为
条目

在我的数据模型中,一个文件夹将包含多个条目,一个条目可以由不同的文件夹包含

因此,每个文件夹都有一个用于标识自身的
folderID
,以及一个名为
entries
的关系,该关系用于包含
Entry
实例。每个条目都有一个名为
superFolders
的反向关系,该关系指向包含它的文件夹

现在是我的问题。这里有一个
文件夹ID
。我想使用这个和
NSFetchRequest
来获取核心数据中这个特殊文件夹包含的所有
条目。以下是主要代码:

let fetchRequest = NSFetchRequest<Entry>(entityName: "Entry")
fetchRequest.predicate = NSPredicate(format: "(ANY folder in %K).folderID = %i", #keyPath(Entry.superFolders), folerID)
let fetchRequest=NSFetchRequest(entityName:“条目”)
fetchRequest.predicate=NSPredicate(格式:“(%K中的任何文件夹)。folderID=%i”,#keyPath(Entry.superFolders),folerID)
上面代码中的格式字符串不正确,但它主要解释了我的意思。由于
superFolders
属性实际上是核心数据中的
NSSet
,因此我不能使用
superFolders.folderID==%I
作为判断条件。我真正想要的是找到其
superFolder
属性包含
folderID
属性与给定
folderID
匹配的任何元素的所有条目

那么可以使用
NSPredicate
来表达我对核心数据的意思吗?

您想要:

let fetchRequest = NSFetchRequest<Entry>(entityName: "Entry")
fetchRequest.predicate = NSPredicate(format: "ANY superFolders.folderID = %@", folderID)
let fetchRequest=NSFetchRequest(entityName:“条目”)
fetchRequest.predicate=NSPredicate(格式:“ANY superFolders.folderID=%@”,folderID)


如果在
超级文件夹
关系上有更复杂的匹配,则需要使用
子查询
,但在本例中,简单的
任何
谓词都可以

谢谢你的回答。您提供的代码工作得非常好。我从官方文件中找到了一份类似的和一份类似的文件。这真的很简单。