如何在 Cloudkit 上创建此 data/model 以在我的应用程序中显示它?
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
}
我想将此数据存储在云端,然后获取要在我的应用程序上显示的数据。问题是我不确定如何存储数据。
我如何存储它以便将所有数据link整合在一起?
如果我有一条包含姓名字段的街道记录,我如何才能 link 将姓名与人的年龄相匹配?我需要存储 3 条不同的记录吗?如果是这样,我将如何 link 将记录放在一起?
我假设你必须使用引用,但我不确定如何去做。
我希望我能清楚地解释我想做的事情。
对于初学者,请查看 Apple 的 CloudKit Quick Start documentation。它将详细介绍我将要说的所有内容,我强烈建议您阅读它。
与您在代码中建模的 struct
非常相似,您将在名为 CloudKit Dashboard 的 Web 门户中创建类似的对象。在将 iCloud 授权正确添加到您的应用程序 ID 后,您将可以使用此门户网站。
在边栏中,您会看到 "Record Types"。这是您可以在不需要任何代码的情况下创建对象的地方。快速入门指南提供了有关如何创建对象(也称为 "record type")的详细信息。 (该对象的实例将称为记录。)基本上,您将需要创建与对象的原始属性相对应的字段,但通常不要编辑放置在记录名称字段中的唯一标识符。例如,您的 Person
记录类型可能包含字段 firstName
(类型 String
)、lastName
(类型 String
)和年龄(类型 Int
).
您的 Home
记录类型可能有一个 houseNumber
字段,类型为 Int
。
CloudKit 处理关系的方式与 Core Data 等本地存储解决方案略有不同。出于效率原因,我们真的不希望对象包含一组关联对象,因为获取 Street
,然后需要获取每个 House
ID,然后获取每个 Person
ID在House
.
因此,我们没有在 Street
上放置一个 House
对象数组,而是在 Street
上放置一个 Reference
类型的字段(到 House
) =]记录类型。
因此,使用这种新的记录类型模型,您将在 CloudKit 仪表板中设置,然后您可以在代码中创建 CKRecord
对象并设置与字段对应的属性。告诉 CKRecord
代表 House
里面住着哪些人,可以通过在每个 CKRecord
代表里面的人设置 house
属性 来完成房子。
例如,您可以使用 CKQuery
获取房子,然后通过为记录 ID 对应的所有 "People" 对象创建 CKQuery
来获取人他们 house
参考字段中的房屋对象。
请参阅 CloudKit 快速入门指南中的 Adding Reference Fields。
编辑:在 CloudKit 仪表板中设置引用字段的值时,该值将是您引用的记录的唯一 ID 名称。
对 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
}
我想将此数据存储在云端,然后获取要在我的应用程序上显示的数据。问题是我不确定如何存储数据。
我如何存储它以便将所有数据link整合在一起?
如果我有一条包含姓名字段的街道记录,我如何才能 link 将姓名与人的年龄相匹配?我需要存储 3 条不同的记录吗?如果是这样,我将如何 link 将记录放在一起?
我假设你必须使用引用,但我不确定如何去做。
我希望我能清楚地解释我想做的事情。
对于初学者,请查看 Apple 的 CloudKit Quick Start documentation。它将详细介绍我将要说的所有内容,我强烈建议您阅读它。
与您在代码中建模的 struct
非常相似,您将在名为 CloudKit Dashboard 的 Web 门户中创建类似的对象。在将 iCloud 授权正确添加到您的应用程序 ID 后,您将可以使用此门户网站。
在边栏中,您会看到 "Record Types"。这是您可以在不需要任何代码的情况下创建对象的地方。快速入门指南提供了有关如何创建对象(也称为 "record type")的详细信息。 (该对象的实例将称为记录。)基本上,您将需要创建与对象的原始属性相对应的字段,但通常不要编辑放置在记录名称字段中的唯一标识符。例如,您的 Person
记录类型可能包含字段 firstName
(类型 String
)、lastName
(类型 String
)和年龄(类型 Int
).
您的 Home
记录类型可能有一个 houseNumber
字段,类型为 Int
。
CloudKit 处理关系的方式与 Core Data 等本地存储解决方案略有不同。出于效率原因,我们真的不希望对象包含一组关联对象,因为获取 Street
,然后需要获取每个 House
ID,然后获取每个 Person
ID在House
.
因此,我们没有在 Street
上放置一个 House
对象数组,而是在 Street
上放置一个 Reference
类型的字段(到 House
) =]记录类型。
因此,使用这种新的记录类型模型,您将在 CloudKit 仪表板中设置,然后您可以在代码中创建 CKRecord
对象并设置与字段对应的属性。告诉 CKRecord
代表 House
里面住着哪些人,可以通过在每个 CKRecord
代表里面的人设置 house
属性 来完成房子。
例如,您可以使用 CKQuery
获取房子,然后通过为记录 ID 对应的所有 "People" 对象创建 CKQuery
来获取人他们 house
参考字段中的房屋对象。
请参阅 CloudKit 快速入门指南中的 Adding Reference Fields。
编辑:在 CloudKit 仪表板中设置引用字段的值时,该值将是您引用的记录的唯一 ID 名称。