Сортировка массива пользовательских объектов по дате swift

У меня есть пользовательский объект "Встреча". Я добавляю все объекты в массив. То, что я хочу сделать, это отсортировать массив из Meeting.meetingDate.

Я также использую Parse, у меня есть два запроса и вывод результатов в один массив.

Я могу добавить данные в "meetingData", но не сортировать его.

Может ли кто-нибудь помочь с этим?

Итак, мой массив:

var meetingsData = [Meeting]()

Класс Meeting:

public class Meeting: PFObject, PFSubclassing
{

  @NSManaged public var meetingTitle: String?
  @NSManaged public var meetingLocation: String?
  @NSManaged public var meetingNotes: String?
  @NSManaged public var meetingDuration: String?
  @NSManaged public var createdBy: User?
  @NSManaged public var meetingTime: NSDate?
  @NSManaged public var meetingDate: NSDate?

}

Содержимое массива выглядит так:

<Meeting: 0x125edd040, objectId: xIqx7MoRd6, localId: (null)> {
createdBy = "<PFUser: 0x125d627c0, objectId: RKCWJRj84O>";
meetingDate = "2015-08-29 17:07:12 +0000";
meetingDuration = "2 hours 2 mins";
meetingLocation = 4th Floor;
meetingNotes = With Investors;
meetingTime = "2015-08-24 09:00:17 +0000";
meetingTitle = Meeting with Investors;
}
<Meeting: 0x125ed95f0, objectId: tz4xx5p9jB, localId: (null)> {
createdBy = "<PFUser: 0x125d627c0, objectId: RKCWJRj84O>";
meetingDate = "2015-08-23 23:00:00 +0000";
meetingDuration = "1 hour";
meetingLocation = "Emirates Stadium, London";
meetingNotes = "Football";
meetingTime = "2000-01-01 20:00:00 +0000";
meetingTitle = "Liverpool V Arsenal";
}
<Meeting: 0x125ed95f0, objectId: tz4xx5p9jB, localId: (null)> {
createdBy = "<PFUser: 0x125d627c0, objectId: RKCWJRj84O>";
meetingDate = "2015-09-23 23:00:00 +0000";
meetingDuration = "1 hour";
meetingLocation = "Library";
meetingNotes = "Dev Team";
meetingTime = "2000-01-01 10:00:00 +0000";
meetingTitle = "Code Review";
}

Я попытался сделать это Swift, как сортировать массив пользовательских объектов по значению свойства, но он не работает

Заранее спасибо

Ответы

Ответ 1

Для Swift 4

Сортировка по отметке времени

values.sorted(by: { $0.meetingDateTimestamp > $1. meetingDateTimestamp})

Ответ 2

NSDate нельзя напрямую сравнивать с <. Вы можете использовать метод NSDate compare, например, в следующем коде:

meetingsData.sort({ $0.meetingDate.compare($1.meetingDate) == .OrderedAscending })

В приведенном выше коде вы можете изменить порядок сортировки с помощью перечисления NSComparisonResult, что в Swift реализовано следующим образом:

enum NSComparisonResult : Int {
   case OrderedAscending
   case OrderedSame
   case OrderedDescending
}

Надеюсь, это поможет вам.

Ответ 3

Для Swift 3

meetingsData.sort(by: { $0.meetingDate.compare($1.meetingDate) == .orderedAscending})

ИЛИ

Поскольку даты теперь прямо сопоставимы в Swift 3, например.

   let firstDate = Date()
   let secondDate = Date()

   if firstDate < secondDate {    
   } else if firstDate == secondDate {        
   } else if firstDate > secondDate {        
   }