arrays - array - Ordenar matriz de objetos personalizados por fecha swift
swift array sort (3)
Tengo un objeto personalizado "Reunión". Estoy agregando todos los objetos en una matriz. Lo que quiero hacer es ordenar la matriz de Meeting.meetingDate.
También estoy usando Parse, tengo dos consultas y pongo los resultados en una matriz.
Puedo agregar los datos a "meetingData", pero no ordenarlos.
¿Alguien puede ayudarme con esto?
Así que mi matriz es:
var meetingsData = [Meeting]()
La clase de la reunión es:
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?
}
El contenido de la matriz es así:
<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";
}
He intentado hacer esto Swift cómo ordenar la matriz de objetos personalizados por valor de propiedad pero no funciona
Gracias por adelantado
Para Swift 3
meetingsData.sort(by: { $0.meetingDate.compare($1.meetingDate) == .orderedAscending})
O
Como las fechas ahora son directamente comparables en Swift 3 , por ejemplo.
let firstDate = Date()
let secondDate = Date()
if firstDate < secondDate {
} else if firstDate == secondDate {
} else if firstDate > secondDate {
}
Para Swift 4
Ordenar por marca de tiempo
values.sorted(by: { $0.meetingDateTimestamp > $1. meetingDateTimestamp})
NSDate
no se puede comparar con <
directamente. Puede usar el método de compare
NSDate
, como en el siguiente código:
meetingsData.sort({ $0.meetingDate.compare($1.meetingDate) == .OrderedAscending })
En el código anterior, puede cambiar el orden de clasificación usando la enumeración NSComparisonResult
, que en Swift se implementa de la siguiente manera:
enum NSComparisonResult : Int {
case OrderedAscending
case OrderedSame
case OrderedDescending
}
Espero que esto te ayude.