按日期 swift 对自定义数组 objects 进行排序
Sort array of custom objects by date swift
我有一个自定义 object "Meeting" 我正在将所有 object 添加到一个数组中。我想要做的是从 Meeting.meetingDate 对数组进行排序。
我也在使用 Parse,我有两个查询并将结果放入一个数组中。
我可以将数据添加到 "meetingData",但不能对其进行排序。
有人可以帮忙吗?
所以我的数组是:
var meetingsData = [Meeting]()
会议 class 是:
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";
}
我试过这样做Swift how to sort array of custom objects by property value但是没用
提前致谢
NSDate
不能直接与 <
进行比较。您可以使用 NSDate
的 compare
方法,如以下代码:
meetingsData.sort({ [=10=].meetingDate.compare(.meetingDate) == .OrderedAscending })
在上面的代码中,您可以使用 NSComparisonResult
枚举更改排序顺序,在 Swift 中的实现方式如下:
enum NSComparisonResult : Int {
case OrderedAscending
case OrderedSame
case OrderedDescending
}
希望对你有所帮助。
对于Swift 3
meetingsData.sort(by: { [=10=].meetingDate.compare(.meetingDate) == .orderedAscending})
或
由于日期现在可以在 Swift 3 中直接比较,例如。
let firstDate = Date()
let secondDate = Date()
if firstDate < secondDate {
} else if firstDate == secondDate {
} else if firstDate > secondDate {
}
对于Swift4,Swift5
按时间戳排序
values.sorted(by: { [=10=].meetingDateTimestamp > . meetingDateTimestamp })
我有一个自定义 object "Meeting" 我正在将所有 object 添加到一个数组中。我想要做的是从 Meeting.meetingDate 对数组进行排序。
我也在使用 Parse,我有两个查询并将结果放入一个数组中。
我可以将数据添加到 "meetingData",但不能对其进行排序。
有人可以帮忙吗?
所以我的数组是:
var meetingsData = [Meeting]()
会议 class 是:
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";
}
我试过这样做Swift how to sort array of custom objects by property value但是没用
提前致谢
NSDate
不能直接与 <
进行比较。您可以使用 NSDate
的 compare
方法,如以下代码:
meetingsData.sort({ [=10=].meetingDate.compare(.meetingDate) == .OrderedAscending })
在上面的代码中,您可以使用 NSComparisonResult
枚举更改排序顺序,在 Swift 中的实现方式如下:
enum NSComparisonResult : Int {
case OrderedAscending
case OrderedSame
case OrderedDescending
}
希望对你有所帮助。
对于Swift 3
meetingsData.sort(by: { [=10=].meetingDate.compare(.meetingDate) == .orderedAscending})
或
由于日期现在可以在 Swift 3 中直接比较,例如。
let firstDate = Date()
let secondDate = Date()
if firstDate < secondDate {
} else if firstDate == secondDate {
} else if firstDate > secondDate {
}
对于Swift4,Swift5
按时间戳排序
values.sorted(by: { [=10=].meetingDateTimestamp > . meetingDateTimestamp })