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 Meeting.meetingDate.
J'utilise également 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 m'aider?
Mon tableau est donc:
var meetingsData = [Meeting]()
La classe Meeting 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 du tableau est le suivant:
<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 le faire Swift comment trier un tableau d'objets personnalisés par valeur de propriété mais cela ne fonctionne pas
Merci d'avance
Pour Swift 4
Tri par horodatage
values.sorted(by: { $0.meetingDateTimestamp > $1. meetingDateTimestamp })
NSDate
ne peut pas être comparé à <
directement. Vous pouvez utiliser la méthode NSDate
de compare
, comme dans le code suivant:
meetingsData.sort({ $0.meetingDate.compare($1.meetingDate) == .OrderedAscending })
Dans le code ci-dessus, vous pouvez modifier l'ordre du tri à l'aide de l'énumération NSComparisonResult
, qui dans Swift est implémentée comme suit:
enum NSComparisonResult : Int {
case OrderedAscending
case OrderedSame
case OrderedDescending
}
J'espère que cela vous aidera.
Pour Swift
meetingsData.sort(by: { $0.meetingDate.compare($1.meetingDate) == .orderedAscending})
OR
Comme les dates sont désormais directement comparables dans Swift, par exemple.
let firstDate = Date()
let secondDate = Date()
if firstDate < secondDate {
} else if firstDate == secondDate {
} else if firstDate > secondDate {
}