我试图围绕适当的架构/模式来解决这种情况:
我有两个实体Book
和Library
。它们各自与其他人有多对多的关系(Book
s可以在多个Library
中,Library
将有许多Book
s。
我的一个观点列出了特定图书馆中的图书。我有一个控制器类来处理这些数据的提取并将其提供给我的视图。为此,我计划对所有NSFetchRequest
实体使用Book
,并按谓词进行过滤,该谓词仅提取特定Library
中的图书。但我似乎无法找到格式化此获取请求的谓词的正确方法。
我还调查过只是访问Library
的{{1}}访问者,无需获取任何内容即可访问相应的图书(如here所述),但我想使用books
以便我的控制器收到有关已获取对象的任何更改的通知,并可以通知视图。我考虑过只是在监听NSFetchedResultsControllerDelegate
,但这会为上下文中的每一个变化发送通知,即使它不适用于相关实体。
过去你是如何处理这种情况的?
答案 0 :(得分:1)
您的获取请求/谓词可能如下所示:
let fetchRequest: NSFetchRequest<Book> = Book.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "%K CONTAINS %@", #keyPath(Book.libraries), library)
// Another option:
fetchRequest.predicate = NSPredicate(format: "SELF IN %@", library.books!)