Trier le tableau d'objets personnalisés par date swift
j'ai un objet personnalisé "Meeting" j'ajoute tous les objets dans un tableau. Ce que je veux faire, c'est trier le tableau de La Réunion.meetingDate.
j'utilise aussi Parse, j'ai deux requêtes et je mets les résultats dans un tableau.
je peux ajouter les données à "meetingData", mais pas les trier.
quelqu'un Peut-il aider?
Donc mon tableau est:
var meetingsData = [Meeting]()
La Réunion de classe est:
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?
}
le contenu de La tableau est comme suit:
<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";
}
j'ai essayé de faire ce Swift comment trier un tableau d'objets personnalisés par valeur de propriété mais ça ne fonctionne pas
Merci d'avance
3 réponses
Swift 4
Tri par horodatage
values.sorted(by: { .meetingDataTimestamp > . meetingDataTimestamp})
NSDate
ne peut pas être comparé avec <
directement. Vous pouvez utiliser NSDate
compare
méthode, comme dans le code suivant:
meetingsData.sort({ .meetingDate.compare(.meetingDate) == .OrderedAscending })
dans le code ci-dessus, vous pouvez changer l'ordre du tri en utilisant le NSComparisonResult
enum, celui de Swift est implémenté comme suit:
enum NSComparisonResult : Int {
case OrderedAscending
case OrderedSame
case OrderedDescending
}
j'espère que cela vous aidera.
Swift 3
meetingsData.sort(by: { .meetingDate.compare(.meetingDate) == .orderedAscending})
OU
comme les dates sont maintenant directement comparables dans Swift 3, Par exemple.
let firstDate = Date()
let secondDate = Date()
if firstDate < secondDate {
} else if firstDate == secondDate {
} else if firstDate > secondDate {
}