Ordena una matriz por NSDates utilizando la function orderar

Tengo una class model llamada Event .

 import Foundation import MapKit public class Event { let id: Int var title: String? let status: String let location: String var description: String? var latitude: CLLocationDegrees? var longitude: CLLocationDegrees? var startDate: NSDate? var endDate: NSDate? init(id: Int, location: String, status: String) { self.id = id self.location = location self.status = status } } 

Obtengo los datos de events de una API web como una respuesta JSON. Luego creo objects de Event para analizar los datos JSON y ponerlos en una matriz mecanografiada ( var events = [Event]() ).

 private func processEventData(data: JSON) { var events = [Event]() if let eventsArray = data.array { for eventObj in eventsArray { let event = Event( id: eventObj["id"].int!, location: eventObj["location"].string!, status: eventObj["status"].string! ) event.title = eventObj["title"].string event.description = eventObj["description"].string event.latitude = eventObj["lat"].double event.longitude = eventObj["lng"].double event.startDate = NSDate(string: eventObj["start"].string!) event.endDate = NSDate(string: eventObj["end"].string!) events.append(event) } } } 

A continuación, necesito orderar este array por el valor de la propiedad startDate . Intenté orderar la matriz usando la nueva function de biblioteca estándar de Swift sort esta manera.

 var ordenetworkingEvents = events.sort({ $0.startDate! < $1.startDate! }) 

Pero extrañamente me sale el siguiente error.

No se puede invocar 'orderar' con una list de arguments de tipo '((_, _) -> _)'

No entiendo por qué no puedo clasificarlo de esta manera porque tengo una matriz mecanografiada.

¿Alguna idea de qué estoy haciendo mal aquí?

No puede comparar directamente las dates usando el < operador. A partir de ahí, tienes un par de opciones. Primero, puede usar la function de compare de NSDate.

 events.sort({ $0.date.compare($1.date) == NSComparisonResult.OrdenetworkingAscending }) 

Otra forma es get la propiedad .timeIntervalSince1970 la date, que es un NSTimeInterval que se puede comparar directamente:

 events.sort({ $0.date.timeIntervalSince1970 < $1.date.timeIntervalSince1970 })