Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSSortDescriptor NSDate升序。如何对具有相同日期的对象进行排序?_Ios_Swift_Nsdate_Nssortdescriptor - Fatal编程技术网

Ios NSSortDescriptor NSDate升序。如何对具有相同日期的对象进行排序?

Ios NSSortDescriptor NSDate升序。如何对具有相同日期的对象进行排序?,ios,swift,nsdate,nssortdescriptor,Ios,Swift,Nsdate,Nssortdescriptor,我正在使用NSFetchedResultsController在列表中显示对象事件。Event-对象具有startDate属性和eventType属性,该属性是签入、音乐会、会议、航班、签出类型的枚举。NSFetchedResultsController有一个sortDescriptor,它按其startDate对事件进行排序: eventsRequest.sortDescriptors = [NSSortDescriptor(key: "startDate", ascending: true)

我正在使用
NSFetchedResultsController
在列表中显示对象
事件
Event
-对象具有
startDate
属性和
eventType
属性,该属性是
签入
音乐会
会议
航班
签出
类型的枚举。
NSFetchedResultsController
有一个
sortDescriptor
,它按其
startDate
对事件进行排序:

eventsRequest.sortDescriptors = [NSSortDescriptor(key: "startDate", ascending: true)]
但是,在某些情况下,
签入
事件和
会议
事件的
开始日期
是完全相同的。这会混淆
sortDescriptor
,有时会将
会议
放在
签入
之前


是否可以制作一个自定义的
NSSortDescriptor
,检查
startDate
是否完全相同,然后检查
eventType
属性,并在
会议之前返回
CheckIn

sortDescriptors
是一个数组,因此,为您想要的第二个属性添加额外的
NSSortDescriptor
,如下所示:

eventsRequest.sortDescriptors = [NSSortDescriptor(key: "startDate", ascending: true), NSSortDescriptor(key: "eventType", ascending: true)]

这将首先使用
NSSortDescriptor
作为
startDate
,如果它们相同,将检查
eventType

的值以确认:这是正确的答案(投票),如果Azat没有击败我,我将说什么。很好,很有意义。非常感谢。但是eventType将如何排序呢?如何确保在会议之前签入,在etc之后签出?Enum只是整数常量的包装器。您为“幻数”指定了有意义的名称,因此0变为签入、1变为音乐会等等。除非您为枚举项提供自己的自定义值,否则它们的顺序将递增,因此
签入
总是在
会议之前进行