代码之家  ›  专栏  ›  技术社区  ›  John Wickham

核心数据:获取多对多关系中的相关对象

  •  0
  • John Wickham  · 技术社区  · 7 年前

    我正努力围绕这种情况的适当架构/模式进行思考:

    我有两个实体, Book Library 他们彼此之间的关系是多对多的。( S可以在很多 图书馆 S和A 图书馆 会有很多 S.

    我的一个视图列出了某个特定图书馆的图书。我有一个控制器类,它处理这个数据的获取并将它提供给我的视图。为此,我计划使用 NSFetchRequest 为所有人 实体,由一个谓词筛选,该谓词只获取特定的书籍 图书馆 。但我似乎找不到为这个提取请求格式化谓词的正确方法。

    我还调查了简单访问 图书馆 books 访问器可以访问相应的书籍而无需获取任何内容(如所述 here 但是我想用 NSFetchedResultsControllerDelegate 因此,我的控制器会收到关于所获取对象的任何更改的通知,并且可以通知视图。我只想听听 NSManagedObjectContextDidChangeObjectsNotification 但这将为上下文中的每一个更改传递通知,即使它不适用于相关实体。

    你以前是如何处理这种情况的?

    1 回复  |  直到 7 年前
        1
  •  1
  •   André Slotta    7 年前

    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!)