参见英文答案 >
How do I sort a swift array containing instances of NSManagedObject subclass by an attribute value (date) 5个
我有一个名为Event的模型类.
我有一个名为Event的模型类.
import Foundation import MapKit public class Event { let id: Int var title: String? let status: String let location: String var description: String? var latitude: CLLocationDegrees? var longitude: CLLocationDegrees? var startDate: NSDate? var endDate: NSDate? init(id: Int,location: String,status: String) { self.id = id self.location = location self.status = status } }
我从Web API获取事件数据作为JSON响应.然后我通过解析JSON数据创建Event对象并将它们放入一个类型化的数组中(var events = [Event]()).
private func processEventData(data: JSON) { var events = [Event]() if let eventsArray = data.array { for eventObj in eventsArray { let event = Event( id: eventObj["id"].int!,location: eventObj["location"].string!,status: eventObj["status"].string! ) event.title = eventObj["title"].string event.description = eventObj["description"].string event.latitude = eventObj["lat"].double event.longitude = eventObj["lng"].double event.startDate = NSDate(string: eventObj["start"].string!) event.endDate = NSDate(string: eventObj["end"].string!) events.append(event) } } }
接下来,我需要通过startDate属性值对此数组进行排序.我尝试使用像这样的新Swift标准库函数排序对数组进行排序.
var orderedEvents = events.sort({ $0.startDate! < $1.startDate! })
但奇怪的是我得到以下错误.
无法使用类型为'((_,_) – > _)’的参数列表调用’sort’
我不明白为什么我不能这样排序,因为我有一个类型化的数组.
知道我在这里做错了吗?