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

17
demandé sur Community 2015-08-25 16:53:04

3 réponses

Swift 4

Tri par horodatage

values.sorted(by: { .meetingDataTimestamp > . meetingDataTimestamp})
2
répondu Joshua Cleetus 2018-07-09 16:00:19

NSDate ne peut pas être comparé avec < directement. Vous pouvez utiliser NSDatecompare 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.

47
répondu Victor Sigler 2016-03-03 13:58:28

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 {        
   }
18
répondu Ramkrishna Sharma 2016-11-25 11:13:51