2017-07-08 50 views
0

我使用核心数据来获取诊所列表,诊所有名为医生的关系映射到医生实体。Swift - 对NSSSet的内容进行排序

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

我尝试以下

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

我哪里错了?

谢谢。

回答

1

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

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

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

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

+0

我得到一个错误,指出'不能调用'排序'类型的参数列表((Doctor,Doctor) - > Bool)1.期望的参数列表(医生,博士) - >布尔)'' –

+0

我现在得到另一个错误,说'不能调用'排序'类型的参数列表(通过:(医生,医生) - >布尔) –

+0

我得到的当前数据夹具有很多没有医生的诊所,我仍然需要存储数据。因此,在我目前的情况下,将医生关系视为非选择性不适用于我。 –

相关问题