gpt4 book ai didi

ios - Swift - 按日期排序问题

转载 作者:搜寻专家 更新时间:2023-11-01 07:18:30 27 4
gpt4 key购买 nike

我正在使用 NSSortDescriptor 按日期元素对 Array 进行排序。使用格式化程序将日期设置为 String,该格式化程序的格式为:“dd/MM/yy HH:mm”。这个日期元素存储在字典中,字典都存储在数组中。我的部分代码如下:

// Date Formatting
let currentTime = Date()
let timeFormatter = DateFormatter()
timeFormatter.locale = Locale.current
timeFormatter.dateFormat = "HH:mm dd/MM/yy"
let convertedTime:String! = timeFormatter.string(from: currentTime)

// Descriptor
let descriptorD: NSSortDescriptor = NSSortDescriptor(key: "Date", ascending: false)

// Dictionary
let newUserRecord = [
"Name" : enteredName!,
"Score" : self.gameScore,
"Date" : convertedTime
] as [String : Any]

// Sorting
newUserArray.sort(using: [descriptorD])

但是我的问题是日期仅按时间 (HH:mm) 排序,没有考虑 (dd/MM/yy) 部分。例如,如果我按日期排序并且日期为 13:12 19/11/16 和日期 09:12 18/11/16 09:12 日期将首先出现,即使它应该是 13:12因为它是一天后。我该如何解决这个问题?

最佳答案

这是面向对象的 Swift 方式:

声明一个结构而不是一个字典,并包含时间格式化程序

struct User {

let timeFormatter : DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale.current
formatter.dateFormat = "HH:mm dd/MM/yy"
return formatter
}()

let name : String
let score : Int
let time : Date

var convertedTime : String {
return timeFormatter.string(from: time)
}

}

声明一个User类型的数组并添加两个实例

var newUserArray = [User]()

newUserArray.append(User(name: "Foo", score: 12, time: Date().addingTimeInterval(1000.0)))
newUserArray.append(User(name: "Bar", score: 78, time: Date()))

按时间降序排列数组

newUserArray.sort(by: {$0.time > $1.time })

并打印格式化的日期

print(newUserArray[0].convertedTime)

关于ios - Swift - 按日期排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com