最近我一直在学习swift (我以前使用过js和java ),遇到了这个问题,我需要根据对象中的字符串值对对象数组进行排序。我有这个列表,我想添加一个排序功能,它会根据记录日期的日期自动对列表进行排序(有点像读取日志)。下面是我如何在日志后面构建数组:
struct LogItem: Hashable, Codable {
var date: String
var time: String
var message: String
}在LogView结构中,我有:
@AppStorage("logs") var logs: [LogItem] = []message属性是日志上的注释。因此,我想要做的是按照日期属性对这个数组进行排序,它是"d/mm/yyyy“格式。我看了几个解决方案,但不知道如果它在一个对象中,如何按字母顺序排序。
如果有人能帮上忙,那就太好了,而且我看到的一些帖子似乎只在一个快速操场上工作,而不是在一个实际的迅捷文件中,我在属性初始化程序错误中得到了无法使用的实例成员,属性初始化器在'self‘之前运行。因此,它必须在一个实际的应用程序中工作。
发布于 2022-08-26 21:43:52
您可以对这样的自定义对象数组进行排序。请记住,此方法按字母顺序对字符串进行排序。
logs.sort(by: {$0.date < $1.date})将<切换到>以反转排序顺序。
...我看到的一些帖子似乎只在一个快速的操场上工作,而不是在一个实际的迅捷文件中工作,我在属性初始化程序错误中得到了无法使用实例成员,属性初始化器在'self‘之前运行。因此,它必须在一个实际的应用程序中工作。
你的问题是你把代码放错地方了。它应该在onAppear方法中,放在最外面的视图之后:
.onAppear {
logs.sort(by: {$0.date < $1.date})
}例如:
var body: some View {
NavigationView { // <- Just an example
...
}
.onAppear {
// appear stuff here
}
}https://stackoverflow.com/questions/73504820
复制相似问题