2015-08-25 33 views
16

我有一个自定义对象“会议”我正在添加数组中的所有对象。我想要做的是从Meeting.meetingDate中排序数组。按日期排序自定义对象数组swift

我也使用解析,我有两个查询,并把结果放入一个数组。

我可以将数据添加到“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"; 
} 

我试图做到这一点Swift how to sort array of custom objects by property value但它不起作用

在此先感谢

回答

42

NSDate不能与<直接比较。您可以在下面的代码中使用的NSDatecompare方法,如:

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

在上面的代码,你可以更改使用NSComparisonResult枚举排序的顺序,在斯威夫特像下面这样实现的:

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

我希望这对你有所帮助。

+0

谢谢..我'使用'sortInPlace'的可变性 – jose920405

15

对于夫特3

meetingsData.sort(by: { $0.meetingDate.compare($1.meetingDate) == .orderedAscending}) 

OR

作为日期现在在夫特3直接可比的,例如。

let firstDate = Date() 
    let secondDate = Date() 

    if firstDate < secondDate {  
    } else if firstDate == secondDate {   
    } else if firstDate > secondDate {   
    } 
+0

谢谢,Ramkrishna。看起来语法已经更新了一些,因为你的帖子... meetingsData.sorted(通过:{$ 0.meetingDate.compare($ 1.meetingDate)== .orderedAscending}) – rockiesGrizzly