如何与 NSPersistentCloudKitContainer 设置有序关系?

2023-11-25

当我检查时Used with CloudKit, 错误Folder.children must not be ordered出现了。关于有序关系有什么想法吗?

使用 Xcode 11(测试版 3)。

enter image description here

这是Folder Entity:

enter image description here


适用于 iOS 13 和 iOS 14 的早期测试版。

云套件无法使用有序关系(这只会失败,因为有序数据是存在的基本事物)。原因是一切都有支持CKRecord(云套件记录)不是真正的核心数据——它是一种完全不同类型的数据存储,并且PersistentCloudKitContainer正在将数据即时重写到 CKRecords 并返回。CKRecord我们没有按照我们在核心数据有序关系中所需的方式维护有序项目日记的机制。

这意味着它不太可能很快被“修复”,因为它通常需要对 CloudKit 和苹果的 iCloud 进行更改(而不是仅对 CoreData 进行更改)。

So...

你有一些不好的选择:

  1. 没有正式的关系——而是有一个存储字段,例如参考列表。当您添加/删除子对象时,请自行维护此内容。本质上,父记录中有一个“管理”字段,您可以用它来维护自己的关系机制。 (例如:生成一个UUID对于每个孩子,父母为所有孩子存储 UUID 的串联列表)
  2. 使用 CoreData 关系,并将排序数据存储在子对象中,例如orderIndex int您手动维护的字段。
  3. 混合:使用从父母到孩子的无序关系,并且also在父级中存储“子级顺序”字段。 CoreData 管理关系,您可以根据需要手动维护和应用这些子项的顺序。

无论你做什么,都是不好的:

  1. 没有关系:没有“获取父级”并通过关系获取对子级的引用;你必须分别获取两者。也没有为您完成“删除”规则,例如“在删除父级时,级联删除子级。”当您需要多个集合中的子项时,这会起作用(因为每个集合记录都保留其自己的子项列表)

  2. 子对象中的排序(这就是我使用的):您必须将自己插入到子对象的每个添加和删除操作中,运行代码来调整所有子对象的 orderIndex 值。我通过拥有一个来管理这个CoreDataManager.createChild(atIndex:), CoreDataManager.deleteChild() and CoreDataManager.moveChild(toIndex:)应用更新 orderIndex 值的副作用的函数。但至少你得到“获取父级;for c inparent.children do...”并且级联删除回来了。然而:现在子项只能出现在一个父项列表中,因为子项只有一个 orderIndex 值。

  3. 关系+父级中手动维护的排序字段:让核心数据管理关联,当您需要有序的子级时,您可以使用parent.orderedChildren()读取你的函数.childOrder父字段,将其应用于 .children 列表。但是...你还是要管理父母的.childOrder手动字段,并在每次添加/删除/重新排序子项时更改它。然而,使用云同步时,您的系统存在许多潜在的错误.child列出和.childOrder当在不同的应用程序实例中添加/删除子项时,字段值会不同步。将子列表和排序分开意味着它们可以通过云同步单独更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何与 NSPersistentCloudKitContainer 设置有序关系? 的相关文章

随机推荐

  • Android - 如何管理具有不同内容的单个片段的多个实例?

    我希望能够设置各个片段的视图的 setText 和 getText 就像现在一样 当我设置 Framgent 的 TextView 的文本时 它会更改所有片段中该视图的文本 我一直在尝试移动东西 但这是我目前的代码 片段类 public c
  • Python WX - 从 wx 对话框返回用户输入

    我是 Python 和 WX 的新手 我创建了一个简单的测试对话框 如下所示 用组合框提示用户 我想从主程序中的组合框中捕获值 我如何从我的主程序中调用它 这就是我打算如何调用它来显示对话框 但当前不捕获组合框中的值 import high
  • ArgumentParser:具有可选值的可选参数

    如果我有一个带有可选参数值的可选参数 有没有办法在未给出值时验证该参数是否已设置 例如 parser argparse ArgumentParser parser add argument abc nargs args parser par
  • OpenERP 始终显示继承视图而不是原始视图

    原始观点
  • SQL Server - 由于“ARITHABORT”而导致 INSERT 失败

    我使用 NHibernate 和 SQL Server 2005 并且在我的一张表的计算列上有一个索引 我的问题是 当我向该表插入一条记录时 出现以下错误 INSERT 失败 因为以下 SET 选项设置不正确 ARITHABORT I us
  • 从数据框中删除仅包含 0 或仅包含单个 0 的行

    我正在尝试在 R 中创建一个函数 该函数允许我根据行是否包含带有零的单列来过滤数据集 此外 有时我只想删除所有列中为零的行 另外 这就是有趣的地方 并非所有列都包含数字 并且列数可能会有所不同 我尝试将一些数据与我想要获得的结果粘贴到此处
  • 如何编写程序来查找某些单词是否相似?

    即 学院 和 学业 和 学院 属于同一集群 essay scholarships money 这些词也属于同一簇 这是 ML 或 NLP 问题吗 这取决于你的定义有多严格similar is 机器学习技术 As others已经指出 你可以
  • 如何在 laravel dompdf 中为每页添加页码?

    我从这里得到 https github com barryvdh laravel dompdf 我的控制器是这样的 public function listdata pdf PDF loadView print tests test pdf
  • 如何正确关闭数据源连接?

    我有这个类 但我不确定如何正确关闭连接 因为即使我只有 3 个用户登录但有多个 sql 查询 我仍然遇到此错误 gt com mysql jdbc exceptions jdbc4 MySQLNonTransientConnectionEx
  • 更改 CMAKE_CXX_FLAGS_DEBUG 和 CMake 中朋友的默认值

    我想更改默认值CMAKE CXX FLAGS RELEASE or CMAKE CXX FLAGS DEBUG在 CMake 中 基本上 我有一些项目默认值与 CMake 的默认值略有不同 例如 对于发布 我不应该问自己 哦 当使用 add
  • 迭代 Objective-C 对象的子对象时,镜像在 Swift 中不起作用

    我有一个与在 Swift 中使用 Mirror 相关的非常奇怪的问题 我正在迭代名为 Test 的类中的所有属性 let test Test let mirror Mirror reflecting test for i in mirror
  • 如何使枚举类与“位或”功能一起使用?

    我通常使用enum与 位或 或 在一起可以让一个对象拥有一些选项 如何使枚举类与 位或 功能一起使用 您需要重载枚举类的运算符 并通过转换为基础类型来实现它们 enum class foo unsigned bar 1 baz 2 foo
  • Symfony 安全性返回 401 响应而不是重定向

    我正在编写一个带有ajax身份验证的ajax应用程序 现在我开始使用silex中的symfony安全组件来处理身份验证 授权 使用简单的配置进行简单的测试 我进入防火墙的受保护区域 得到的响应是重定向到 login页面 但我在应用程序中需要
  • 阻止 UIPopover 自动关闭

    我想知道是否有办法阻止 iPad 弹出框在您触摸弹出框外的屏幕时自动关闭 如果没有 是否有某种类似于 popoverDidDismiss 的方法 我可以调用它来告诉弹出窗口何时被关闭 是的你可以 这是苹果文档中的内容 当由于用户在弹出窗口视
  • 在球体上翻转 Three.js 中的法线

    我一直在四处寻找 但还没有找到任何真正好的答案来回答我的问题 问题是我有这个球体 只是一个基本球体 我想翻转法线 所以 球体获得某种 空心 雕刻效果 然后将我的纹理应用到球体的 内部 关于如何翻转法线有什么想法吗 另外 如果不可能在 Thr
  • Pandas,在字符串中打印变量

    我有一个数据框 新 看起来像这样 num name1 name2 11 A AB 14 Y YX 25 L LS 39 Z ZT 我只想提取打印语句中的数值 这样我就有一个如下所示的输出 The value is 11 The value
  • Python:xml ElementTree(或 lxml)中的命名空间

    我想检索旧版 xml 文件 操作并保存它 这是我的代码 from xml etree import cElementTree as ET NS http www somedomain com XI Traffic 10 def fix xm
  • 如何在 gdb 中打印 Objective-C 类方法的结果?

    当使用 gdb 通过调试控制台 在 Xcode 4 中调试 iPad 程序时 我试图打印出运行类方法的结果 gdb po MyClass foo bar gdb 输出以下内容 当前上下文中没有符号 MyClass 有没有办法打印结果 NSS
  • C# 编译/构建是一个增量过程吗?

    我们的解决方案包含大量 C 项目 它们之间存在复杂的依赖关系 例如 项目A B C A依赖于B B依赖于C 如果我更改项目C中的一个文件 然后重建解决方案 项目A B C将一起重建 在C 中 构建包含两个过程 编译和链接 如果我更改项目C中
  • 如何与 NSPersistentCloudKitContainer 设置有序关系?

    当我检查时Used with CloudKit 错误Folder children must not be ordered出现了 关于有序关系有什么想法吗 使用 Xcode 11 测试版 3 这是Folder Entity 适用于 iOS