首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CloudKit模式设计

CloudKit模式设计
EN

Stack Overflow用户
提问于 2016-11-09 01:41:10
回答 1查看 185关注 0票数 1

我使用Core数据编写了本地数据模型。它是面向对象的,所以在我的核心数据模型中有这样的东西:

代码语言:javascript
复制
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
}

现在在CloudKit中,我意识到如果我想得到一个“对”和它的所有数据,然后生成"Person“和"Address”CKReference,那么我就必须获取"Person“和"Address”,这是两个额外的网络调用和大量逻辑来异步处理它们的结果。因此,我在考虑“去角色化”这个数据,并将其全部放入CloudKit模式中的“对”CloudKit中,而不需要任何CKReference

代码语言:javascript
复制
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
}

以这种方式设计我的CloudKit模式以避免对CKReferences进行额外的网络获取调用是合法的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-18 02:23:01

以这种方式设计我的CloudKit模式以避免对CKReferences进行额外的网络获取调用是合法的吗?

我会说答案是肯定的,这是一个合法的设计。

请注意,您所做的权衡是优先考虑有效的网络调用而不是高效地使用iCloud数据库空间。

您建议的设计将使您存储相同的信息不止一次。根据您的用例,这可能会比理想的多很多次:

例如:

  • Person A <-对具有-> Person B
  • Person A <-对具有-> Person C
  • Person A <-对具有-> Person D

如果本系列更进一步,那么您将多次将Person A存储在数据库中,这可能被认为是对空间的极大浪费。另一方面,对于您打算如何使用这些数据,这可能是完全合理的。

我建议对用例进行建模,并根据苹果为iCloud提供的使用限制对它们进行度量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40499157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档