首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据对象属性中的字符串值对对象数组进行排序?

如何根据对象属性中的字符串值对对象数组进行排序?
EN

Stack Overflow用户
提问于 2022-08-26 17:50:44
回答 1查看 93关注 0票数 -3

最近我一直在学习swift (我以前使用过js和java ),遇到了这个问题,我需要根据对象中的字符串值对对象数组进行排序。我有这个列表,我想添加一个排序功能,它会根据记录日期的日期自动对列表进行排序(有点像读取日志)。下面是我如何在日志后面构建数组:

代码语言:javascript
复制
struct LogItem: Hashable, Codable {
    var date: String
    var time: String
    var message: String
}

在LogView结构中,我有:

代码语言:javascript
复制
@AppStorage("logs") var logs: [LogItem] = []

message属性是日志上的注释。因此,我想要做的是按照日期属性对这个数组进行排序,它是"d/mm/yyyy“格式。我看了几个解决方案,但不知道如果它在一个对象中,如何按字母顺序排序。

如果有人能帮上忙,那就太好了,而且我看到的一些帖子似乎只在一个快速操场上工作,而不是在一个实际的迅捷文件中,我在属性初始化程序错误中得到了无法使用的实例成员,属性初始化器在'self‘之前运行。因此,它必须在一个实际的应用程序中工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-26 21:43:52

您可以对这样的自定义对象数组进行排序。请记住,此方法按字母顺序对字符串进行排序。

代码语言:javascript
复制
logs.sort(by: {$0.date < $1.date})

<切换到>以反转排序顺序。

...我看到的一些帖子似乎只在一个快速的操场上工作,而不是在一个实际的迅捷文件中工作,我在属性初始化程序错误中得到了无法使用实例成员,属性初始化器在'self‘之前运行。因此,它必须在一个实际的应用程序中工作。

你的问题是你把代码放错地方了。它应该在onAppear方法中,放在最外面的视图之后:

代码语言:javascript
复制
.onAppear {
    logs.sort(by: {$0.date < $1.date})
}

例如:

代码语言:javascript
复制
var body: some View {
    NavigationView { // <- Just an example
        ...
    }
    .onAppear {
        // appear stuff here
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73504820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档