arrays - 在 Coredata 中存储自定义类类型数组
问题描述
我正在尝试将自定义类类型数组存储在 coredata 中。
我设置的是一个名为string 和typeNode
属性的实体。该属性应该存储一个类型数组,如下面的代码所示。value
children
Transformable
children
Node
public class Node: NSManagedObject {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Node> {
return NSFetchRequest<Node>(entityName: "Person")
}
@NSManaged public var children: [Node]?
@NSManaged public var value: String?
}
.xcdatamodel
设置:
目前,应用程序崩溃并显示错误消息“此解码器将仅解码采用 NSSecureCoding 的类。类 'Node' 不采用它。” 所以我用字符串数组而不是节点数组尝试了它,它似乎工作。
我猜需要做一些额外的事情来存储自定义数组类型。
解决方案
听起来您想要一个递归数据结构,其中每个节点可以有许多其他节点作为子节点,另一个节点作为其父节点。这就是 CoreData 关系的用途。
在您的Node
实体下:
- 添加
children
类型为“To Many”的关系与 destinationNode
。没有逆。 - 添加
parent
类型“To One”与 destination的关系Node
,将其逆设置为children
- 回到
children
关系并将其逆设置为parent
- 考虑删除规则应该是什么。我建议“级联”
children
,意思是如果你删除一个父级,它的所有子级也会被删除。“Nullify”对 有意义parent
,这意味着如果您删除一个孩子,它只会删除父母与该孩子的连接。
推荐阅读
- math - 在现代 x86-64 上计算 64 位整数的整数 Log10 的最快方法是什么?
- python-3.x - 带有异步协程的管道
- xamarin - 主项目未调用参考项目自定义渲染器
- javascript - InvalidPipeArgument:管道“AsyncPipe”的“[object Object]”,无法修改 HTML
- html - 表单中的 Textarea 数据未保存在 mongoose 中,但是我可以将其作为 req.body.bio 记录在服务器端代码中
- php - 反转显示的 Woocommerce 订阅的注册费和月费
- webgl - 纹理重新排列算法在 javascript 中非常简单,但在 webgl 中很困难
- python - 在数据框中组合不同的缩放数组
- java - 如何将值解析为适当的目标类型
- python - 如何与自定义 numpy dtypes 交互