iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 使用排序函数[复制]按NSDates排序数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How do I sort a swift array containing instances of NSManagedObject subclass by an attribute value (date)                                    5个
我有一个名为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’

我不明白为什么我不能这样排序,因为我有一个类型化的数组.

知道我在这里做错了吗?

解决方法

您无法使用<直接比较日期.操作符.从那里,你有几个选择.首先,您可以使用NSDate的比较功能.

events.sort({ $0.date.compare($1.date) == NSComparisonResult.OrderedAscending })

另一种方法获取日期的.timeIntervalSince1970属性,这是一个可以直接比较的NSTimeInterval:

events.sort({ $0.date.timeIntervalSince1970 < $1.date.timeIntervalSince1970 })

大佬总结

以上是大佬教程为你收集整理的ios – 使用排序函数[复制]按NSDates排序数组全部内容,希望文章能够帮你解决ios – 使用排序函数[复制]按NSDates排序数组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: