Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Cloudkit上创建此数据/模型以在我的应用程序中显示?_Ios_Swift_Cloudkit - Fatal编程技术网

Ios 如何在Cloudkit上创建此数据/模型以在我的应用程序中显示?

Ios 如何在Cloudkit上创建此数据/模型以在我的应用程序中显示?,ios,swift,cloudkit,Ios,Swift,Cloudkit,对于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

对于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
}
我想将这些数据存储在云上,然后获取要在我的应用程序上显示的数据。问题是我不确定如何存储数据

我如何存储它,以便将所有数据链接在一起

如果我有一个街道的记录,其中有一个姓名字段,我如何能够将姓名与该人的年龄联系起来?我需要存储3个不同的记录吗?如果是,我将如何将这些记录链接在一起

我想你必须使用参考资料,但我不知道该怎么做


我希望我能清楚地解释我要做的事情。

首先,请查看苹果的。这本书将详细介绍我将要说的所有内容,我强烈推荐阅读

与在代码中建模的
struct
s非常相似,您将在名为的web门户中创建类似的对象。在将iCloud权利正确添加到您的应用程序ID后,您将可以使用此门户网站

在侧边栏中,您将看到“记录类型”。您可以在这里创建对象,而不需要任何代码。《快速入门指南》详细介绍了如何创建对象,也称为“记录类型”。(该对象的实例称为记录。)基本上,您需要创建与该对象的基本属性相对应的字段,但通常不编辑放置在记录名称字段中的唯一标识符。例如,您的
个人
记录类型可能有
名字
(类型
字符串
)、
姓氏
(类型
字符串
)和年龄(类型
Int

您的
Home
记录类型可能有一个
houseNumber
字段,类型为
Int

CloudKit处理关系的方式与核心数据等本地存储解决方案略有不同。出于效率考虑,我们并不希望对象包含一组关联对象,因为获取一条
街道
,然后需要获取每个
房屋
ID,然后获取
房屋
中的每个
ID

因此,我们不是将
房屋
对象数组放置在
街道
上,而是将
引用类型的字段(指向
房屋
)放置在
街道
记录类型上

因此,通过在CloudKit Dashboard中设置的新记录类型模型,您可以在代码中创建
CKRecord
对象并设置与字段对应的属性。通过在代表房子里的人的每个
CKRecord
上设置
House
属性,可以告诉代表房子里的人的
CKRecord

例如,您可以使用
CKQuery
获取房屋,然后通过为所有“人员”对象创建
CKQuery
来获取房屋,这些对象在其
house
参考字段中具有与房屋对象对应的记录ID

请参阅《CloudKit快速入门指南》中的


编辑:在CloudKit Dashboard中设置引用字段的值时,该值将是您引用的记录的唯一ID名称。

我使用CloudKit从仪表板发送和接收数据。只是引用的方式让我有点困惑。在你给我的链接页面的一半,添加参考字段,是在
艺术品
艺术家
之间进行参考。比如说,我想知道艺术家玛丽亚·鲁伊斯(Maria Ruiz)的年龄,但这些数据并不是随艺术品而来,而是随艺术家的数据而来。
Maria Ruiz
会是另一个公开记录吗?事实上,现在我在写这篇文章,我相信参考文献需要反向工作?因此,我会为
Person
创建一个记录,并将其引用到
Home
抱歉,如果这些内容阅读起来很混乱,而且我要求的内容也不简洁。感觉上我知道我想知道的,但知道我想问的是很困难的。CloudKit中的记录是反向工作的,这是正确的。你们会在一个人身上有一个指向房子的参考字段。然后,您可以为给定房屋的所有“人员”创建查询。这很有意义。然后在person内部,我将在参考字段中输入房子的内容将与我存储房子的名称相同,对吗?是的,其中房子的“名称”是唯一ID,而不是您提供的任何自定义
字符串。