热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在CloudKit中保存对象数组-SavingAnArrayOfObjectsInCloudKit

ImconfusedabouthowtobestsaveanobjectthatcontainsanarrayofotherobjectsinCloudKit.我

I'm confused about how to best save an object that contains an array of other objects in CloudKit.

我对如何最好地保存包含CloudKit中其他对象数组的对象感到困惑。

Say I have a todo list app, which has different collections of items. How would I go about saving/fetching a whole collection of items?

假设我有一个待办事项列表应用程序,它有不同的项目集合。我如何保存/获取整个项目集合?

Would I have a Record type of Collection, which would have a String Attribute called "Name", and then a Reference List Attribute called "Items"?

我是否有一个Record类型的Collection,它有一个名为“Name”的String属性,然后是一个名为“Items”的引用列表属性?

I know that the Record type of Item needs to have a Reference Attribute called "Collection", because of how CloudKit references from a child object to its parent.

我知道Record类型的Item需要有一个名为“Collection”的引用属性,因为CloudKit如何从子对象引用它的父对象。

I have managed to save a Collection without any instances of Item with the following code

我已设法使用以下代码保存没有任何Item实例的Collection

func addCollection(collection: Collection!, completion: (error: NSError!) -> ()) {
    if collection == nil
        return
    }
    let collectiOnRecord= CKRecord(recordType: "Collection")
    CollectionRecord.setObject(collection.name, forKey: "Name")
    privateDB.saveRecord(collectionRecord) {
        record, error in
        dispatch_async(dispatch_get_main_queue()) {
           completion(error: error)
        }
    }
}

The other option is when saving a Collection, to loop through all instances of Item and also save those individually, their Reference Attribute to Collection making the connection on the CloudKit side, but this seems like way too many network calls.

另一个选择是在保存Collection时,循环遍历Item的所有实例并单独保存它们,它们的Reference Attribute to Collection在CloudKit端进行连接,但这似乎是太多的网络调用。

1 个解决方案

#1


3  

For the Item records you need a CKReference to the Collection. You will then be able to set a CKReferenceAction on that. You don't need to create a CKReference list on the Collection.

对于Item记录,您需要CKReference到Collection。然后,您就可以在其上设置CKReferenceAction。您无需在Collection上创建CKReference列表。

Having a list of CKReference objects is only an option when you are planning to use CKReferenceAction.None Which would mean that there is not a strict relation between the two recordTypes

当您计划使用CKReferenceAction.None时,只有一个CKReference对象列表是一个选项。这意味着两个recordTypes之间没有严格的关系

If you have a Collection object, then you can easily query the Item recordType using a predicate that Checks if the CKReference is that of the Collection.

如果您有一个Collection对象,那么您可以使用一个谓词轻松查询Item recordType,该谓词检查CKReference是否为Collection的值。

Usually there is no need to save multiple records. Once you have created a Collection with Items the relation can remain unchanged. If you do need to change multiple records, then you could try using the CKModifyRecordsOperation which has support for saving multiple items in one action.

通常不需要保存多条记录。使用Items创建Collection后,关系可以保持不变。如果确实需要更改多个记录,则可以尝试使用CKModifyRecordsOperation,它支持在一个操作中保存多个项目。

When linking existing Item recordTypes to a Collection, you do need to save each Item because it has a CKReference to the Collecion. The Item has changed, so it must be saved.

将现有的Item recordTypes链接到Collection时,您需要保存每个Item,因为它有一个CKReference给Collecion。项目已更改,因此必须保存。


推荐阅读
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • 本文介绍了Java中Currency类的getInstance()方法,该方法用于检索给定货币代码的该货币的实例。文章详细解释了方法的语法、参数、返回值和异常,并提供了一个示例程序来说明该方法的工作原理。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • Iamtryingtocreateanarrayofstructinstanceslikethis:我试图创建一个这样的struct实例数组:letinstallers: ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
author-avatar
平凡小迪
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有