【发布时间】:2021-08-21 09:23:19
【问题描述】:
我将数据存储在使用关系的 CoreData 实体中。默认情况下,toMany 类型关系的类型为NSSet。为了将此NSSet 按添加到此NSSet 的项目的顺序加载到表视图中,我需要将其转换为数组。我该如何实现这一目标?
NSManaged 子类生成:
extension Node {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Node> {
return NSFetchRequest<Node>(entityName: "Node")
}
@NSManaged public var value: String?
@NSManaged public var children: NSSet?
@NSManaged public var parent: Node?
@objc(addChildrenObject:)
@NSManaged public func addToChildren(_ value: Node)
@objc(removeChildrenObject:)
@NSManaged public func removeFromChildren(_ value: Node)
@objc(addChildren:)
@NSManaged public func addToChildren(_ values: NSSet)
@objc(removeChildren:)
@NSManaged public func removeFromChildren(_ values: NSSet)
}
注意:由于 CloudKit 不支持有序关系,我不能将有序排列作为解决方案的一部分。
【问题讨论】:
-
您要将关系转换为有序关系还是要将
NSSet排序为代码中的Array? -
我想将
NSSet转换为一个数组(按照添加到NSSet中的项目的顺序)。 -
@RajaKishan 不会创建 [NSSet?] 类型的数组。我正在尝试获取 [Node] 类型的数组
-
let arr = Array(children!)试试这个 -
那是你真正的问题吗?如果您需要维护添加项目的顺序,那么您需要在模型构建器中检查关系的 Ordered 复选框,或者添加一个跟踪顺序的属性,如计数器或日期属性。
标签: swift core-data nsarray nsset