web-dev-qa-db-ja.com

日付swiftでカスタムオブジェクトの配列を並べ替え

カスタムオブジェクト「会議」があり、すべてのオブジェクトを配列に追加しています。私がやりたいのは、Meeting.meetingDateから配列を並べ替えることです。

また、Parseを使用しています。2つのクエリがあり、結果を1つの配列に入れています。

データを「meetingData」に追加することはできますが、並べ替えることはできません。

誰でもこれを助けることができますか?

だから私の配列は:

var meetingsData = [Meeting]()

会議クラスは次のとおりです。

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?

}

配列の内容は次のとおりです。

<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";
}

私はこれをやろうとしました カスタムオブジェクトの配列をプロパティ値ですばやくソートする方法 が動作しません

前もって感謝します

19
Hassan Mahmood

Swift 4の場合

タイムスタンプによる並べ替え

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

NSDate<と直接比較できません。次のコードのように、NSDateの-​​ compare メソッドを使用できます。

meetingsData.sort({ $0.meetingDate.compare($1.meetingDate) == .OrderedAscending })

上記のコードでは、 NSComparisonResult 列挙型を使用してソートの順序を変更できます。Swiftの実装は次のようになります。

enum NSComparisonResult : Int {
   case OrderedAscending
   case OrderedSame
   case OrderedDescending
}

これがお役に立てば幸いです。

52
Victor Sigler