2017-10-09 6 views
0

コアデータから自分のデータをフェッチしたいと思います。このために、私は次のコードを持っている:コアデータ - キーパスとオブジェクト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

あなたがオブジェクトIDからexistingObjectでオブジェクトを取得し、述語にそれを使用する必要があります。

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

大好きです - ありがとう:) – Ghost108

+0

IDを持つオブジェクトがない場合、nilを返す 'existingObject(with:)'を使うのが普通です。 –

+0

@TomHarringtonありがとう!私の答えを更新しました。 – the4kman

関連する問題