I have written my local data model using Core Data. It is object oriented, so I have something like this in my Core Data model:
class Pair {
var uuid: NSUUID
var me: Person
var friend: Person
}
class Person {
var name: String
var birthday: NSDate
var address: Address
}
class Address {
var streetNumber: Int16
var streetName: String
var zip: Int16
}
Now in CloudKit, I am realizing if I want to get a "Pair" and all of its data, and I make "Person" and "Address" CKReference then I will have to fetch "Person" and "Address" which is two extra network calls and lots of logic to handle their results asynchronously. So I was thinking of "denormalizing" this data and putting it all into a "Pair" CKRecord in the CloudKit schema, without any CKReferences. So more along the lines of this:
class CloudKitPair {
var uuid: NSUUID
var myName: String
var myBirthday: NSDate
var myStreetNumber: Int16
var myStreetName: String
var myZip: Int16
var friendName: String
var friendBirthday: NSDate
var friendStreetNumber: Int16
var friendStreetName: String
var friendZip: Int16
}
Is it legitimate to design my CloudKit schema this way to avoid extra network fetch calls for CKReferences?