ios - Swift-对NSSSet的内容进行排序

标签 ios swift3 nsset

我正在使用核心数据来获取诊所列表,这些诊所具有名为Doctors的关系映射到Doctor实体。

我的问题是,每次获取NSSSet类型的医生时,记录都是随机获取的,我想使用Doctor.name按字母顺序对其进行排序

我尝试了以下

self.doctorList = clinic.doctors?.sortedArray(using: [NSSortDescriptor(key: "name", ascending: true)])

我要去哪里错了?

谢谢。

最佳答案

(NS)Set是无序集合类型。

要订购Set,请将其转换为具有allObjects属性的数组,并对数组进行排序。

self.doctorList = (clinic.doctors!.allObjects as! [Doctor]).sorted(by: { $0.name < $1.name })

您甚至可以直接对集合进行排序,但结果始终是一个数组
self.doctorList = (clinic.doctors as! Set<Doctor>).sorted(by: { $0.name < $1.name })

而且,无论如何,如果将该集合声明为本地Set<Doctor>,则可以忽略类型转换。

我建议将doctors关系声明为非可选。如果没有相关的医生,则该集合为空。但是没有任何医生的诊所是极不可能的;-)

关于ios - Swift-对NSSSet的内容进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44989871/

相关文章:

inheritance - SceneKit Swift 3 继承不起作用

swift - 将 NSSet 转换为数组

cocoa - 子类化/扩展 NSMutabelSet?

ios - 与第二组相比,NSSet 计数唯一条目

ios - 表达式太复杂,无法在合理的时间内解决 Swift 3

iphone - 禁用 MFMailComposeViewController 上的编辑

ios - 当前可见 View 的 UIScrollview zoomToRect 中心

ios - 如果我在 TextField 中写入,则启用按钮

ios - 如何在 Swift 中以编程方式更改 UIWebView 方向

ios - tableView 滚动到底部不显示最后一部分,必须手动滚动,有人知道吗?