2017-10-08 28 views
0

我迅速与4个工作MacOS的所有书籍,我有两个核心数据实体(人与书)得到人

我想请所有书籍,wehre人==最大。 有了这个代码,我可以获取所有的书:

let request = NSFetchRequest<Book>(entityName: "Book") 
request.predicate = // 
request.sortDescriptors = [NSSortDescriptor(key: "bookName", ascending: true)] 
    do { 
     let books = try context.fetch(request) 
     print(books) 
    } catch { } 

但我怎么也得使用谓词只拿到了书,被分配到人的名称为“最大”?

+0

你看看“筛选结果“在https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/FetchingObjects.html中的核心数据编程指南? - 为什么你创建一个'NSFetchRequest '来获取Book对象? –

+0

我想这个文件不能帮助我。我现在可以像这样使用谓词:'request.predicate = NSPredicate(format:“bookName =%@”,“MyBook”)'但是我必须知道谓词是如何得到赋值人的与书籍的关系 – Ghost108

+0

只需按照关键路径,例如'NSPredicate(格式:“person.name =%@”,“Max”)' –

回答

0
  • 书籍有一对一的关系 “人” 人,
  • 有一个属性 “名字”。

所以“person.firstName”是从一本书到 拥有它的人的名字的关键路径,你正在寻找的谓语是

NSPredicate(format: "person.firstName = %@", "Max")