gpt4 book ai didi

swift - 如何理解核心数据实体键是可排序的?

转载 作者:行者123 更新时间:2023-11-28 06:10:03 24 4
gpt4 key购买 nike

我创建了一个通用函数来检查排序描述符的有效性:

func _areValid(sortDescriptors: [NSSortDescriptor], of type: Object.Type) -> Bool {

var inputKeys: Set<String> = []
sortDescriptors.forEach { if let key = $0.key { inputKeys.insert(key) } }

if inputKeys.isSubset(of: Set(type.entity().attributesByName.keys)) { return true }
else { return false }
}

它允许验证 NSSortDescriptor 中的键确实是实体键。问题是键可以存在,但不能排序。例如,UUID。我怎样才能检查它?谢谢。

最佳答案

我认为您必须检查每个属性的 attributeType 字段,并且只允许特定类型。据我所知,如果不列出允许的类型,就无法从属性类型进行可排序性检查。

对于 UUID 属性,属性类型是 UUIDAttributeType。这对应于 UUID 类型的属性。但是,UUIDAttributeTypeUUID 结构定义并没有说明这一点。它只出现在文档中。您可以查找属性类型,但没有内置方法来检查某些属性类型值是否对应于您可以在排序描述符中使用的内容。

在某些时候,当您查找 attributesByName 时,您需要查看每个属性并为 UUIAttributeType 和任何内容返回 false否则你不想允许。这并不理想,但我认为这是唯一的方法。

顺便说一句,我非常想知道您在做什么,这使得这项检查成为必要。

关于swift - 如何理解核心数据实体键是可排序的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47004150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com