[英]How do I create this data/model on Cloudkit to display it in my app?
對於Cloudkit來說還算是新手,所以我一直在弄清楚如何對數據建模。 下面,我給出了與我的模型相似的一小段代碼示例。
struct Street {
var house: [Home]
}
struct Home {
var people: [Person]
var houseNumber: Int
}
struct Person {
var firstName: String
var lastName: String
var age: Int
}
我想將此數據存儲在雲端,然后獲取要在我的應用程序上顯示的數據。 我不確定如何存儲數據。
我將如何存儲它以便所有數據鏈接在一起?
如果我有一個Street記錄,其中有一個名字字段,該如何將名字與該人的年齡聯系起來? 我需要存儲3個不同的記錄嗎? 如果是這樣,我將如何將記錄鏈接在一起?
我假設您必須使用引用,但是我不確定該怎么做。
我希望我能清楚地解釋我要做什么。
對於初學者,請查看Apple的CloudKit快速入門文檔 。 它將詳細介紹我要說的所有內容,強烈建議您閱讀。
就像您在代碼中建模的struct
一樣,您將在名為CloudKit Dashboard的Web門戶中創建類似的對象。 在將iCloud權利正確添加到您的應用程序ID后,您將可以使用此Web門戶。
在邊欄中,您將看到“記錄類型”。 您可以在這里創建對象而無需任何代碼。 《快速入門指南》提供了有關如何創建對象(也稱為“記錄類型”)的詳細信息。 (該對象的一個實例稱為記錄。)基本上,您將需要創建與該對象的原始屬性相對應的字段,但通常不要編輯放置在記錄的name字段中的唯一標識符。 例如,您的Person
記錄類型可能具有字段firstName
(類型為String
), lastName
(類型為String
)和age(類型為Int
)。
這樣,您的Home
記錄類型可能會有一個houseNumber
字段,類型為Int
。
CloudKit處理關系的方式與本地存儲解決方案(例如Core Data)略有不同。 出於效率方面的考慮,我們並不真正希望對象包含一組關聯的對象,例如,獲取一條Street
需要先獲取每個House
ID,然后獲取House
中的每個Person
ID。
因此,我們沒有在Street
上放置House
對象數組,而是在Street
記錄類型上放置了類型Reference
(到House
)的字段。
因此,使用將在CloudKit儀表板中設置的這種新的記錄類型模型,然后可以在代碼中創建CKRecord
對象並設置與字段對應的屬性。 通過CKRecord
代表該house
中的每個人的CKRecord
上設置house
屬性,可以告訴一個代表House
的CKRecord
來完成。
例如,您可以使用CKQuery
來獲取房屋,然后通過為所有“ People”對象創建CKQuery
來獲取房屋的人,這些對象的記錄ID與其house
參考字段中的房屋對象相對應。
請參閱《 CloudKit快速入門指南》中的添加參考字段 。
編輯 :在CloudKit儀表板中設置“引用”字段的值時,該值將是您引用的記錄的唯一ID名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.