2017-10-09 98 views
0

我想從核心數據中提取我的數據,其中書籍分配給人「Max」。對於這一點,我有以下代碼:核心數據 - 使用keypath和對象ID獲取對象

let request = NSFetchRequest<Book>(entityName: "Book") 
    request.predicate = NSPredicate(format: "person.firstName = %@", "Max") 
    do { 
     let books = try context.fetch(request) 
     for x in 0 ..< books.count { 
      print(books[x].name) 
     } 
    } catch { } 

但現在我想取其中的書籍被分配到一個人與對象ID「XYZ」的數據。

我嘗試這樣做,但它不工作:

request.predicate = NSPredicate(format: "person.self = %@", myPersonObjectID) 
+0

您的問題標題與問題主體不匹配(根本不符合*排序*)。 –

+0

我更新了它:) – Ghost108

回答

0

你應該existingObject從Object ID獲取對象和使用,在謂語。

if let myPerson = context.existingObject(with: myPersonObjectID) { 
    request.predicate = NSPredicate(format: "person = %@", myPerson) 
} 
+0

我喜歡它 - 謝謝:) – Ghost108

+0

通常最好使用'existingObject(with:)',如果沒有帶ID的對象,它將返回nil。 –

+0

@TomHarrington謝謝!更新了我的答案。 – the4kman