web-dev-qa-db-fra.com

Trier le tableau des 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 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

19
Hassan Mahmood

Pour Swift 4

Tri par horodatage

values.sorted(by: { $0.meetingDateTimestamp > $1. meetingDateTimestamp })
11
Joshua Cleetus

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.

52
Victor Sigler

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 {        
   }
19
Ramkrishna Sharma