Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the best practice approach to fetching CKReferences in CloudKit?

In my CloudKit setup I have a Person record type and each person has a Friend attribute which is a CKReference to another Person object.

I fetch all Person CKRecords. I list these people in a table and list their friends with them. Currently I just take the CKReference and individually fetch each friend using the recordID.

This is the only way I can see to do it, but what would be best practice? Particularly as I am fetching potentially a very large number of friends. It seems counterintuitive to fetch all these objects individually.

I was wondering if there was a method much like CoreData, where you can choose to fetch related objects in the main fetch? So for example, when I fetch a Person it automatically fetched the friends too.

like image 375
Josh Kahane Avatar asked Dec 01 '14 15:12

Josh Kahane


2 Answers

You could use an 'in' predicate query to fetch multiple id's. You can define a predicate like this:

NSPredicate(format: "To_ID in %@", [recordIdMe, recordIdOther])!

In your case where you see the recordIdMe and recordIdOther you should have an array of valid CKReference objects.

In CloudKit there is no functionality to automatically fetch related records.

like image 140
Edwin Vermeer Avatar answered Oct 21 '22 15:10

Edwin Vermeer


Actually you should collect all the RecordIDs and add a CKFetchRecordsOperation to the relevant database object.

You get a back a dictionary to help you match the results with the original list.

like image 24
Yariv Nissim Avatar answered Oct 21 '22 13:10

Yariv Nissim