Swift 将可编码变量转换为字符串数组

问题描述 投票:0回答:1

我正在按照本教程创建可折叠的 TableView:

https://www.youtube.com/watch?v=Q8k9E1gQ_qg

他将名称的字符串数组加载到表视图中,如下所示:

struct ExpandableNames {
    
    var isExpanded: Bool
    let names: [String]
    
}

var twoDimensionalArray = [
        ExpandableNames(isExpanded: true, names: ["Amy", "Bill", "Zack", "Steve", "Jack", "Jill", "Mary"]),
        ExpandableNames(isExpanded: true, names: ["Carl", "Chris", "Christina", "Cameron"]),
        ExpandableNames(isExpanded: true, names: ["David", "Dan"]),
        ExpandableNames(isExpanded: true, names: ["Patrick", "Patty"]),
    ]

我想从我的可编码用户模型的“名称”变量创建名称字符串数组:

 struct User: Codable {
        //var id: Int
        var user_id: Int
        var name: String
        
        static func endpointForUsers() -> String {
            return "users.php"
          
        }
    }

编辑:简而言之...我有一个 [User],我想要一个由 [User] 数组中的名称属性组成的 [String]。

您能否解释一下如何将我的用户可编码的所有名称加载为字符串数组? (就像教程中的那样。)

提前致谢!

arrays swift codable
1个回答
0
投票

如果您有一个

User
对象数组,并希望将其从每个用户的名称属性转换为
String
数组,您可以使用 map() 函数:

 struct User: Codable {
        //var id: Int
        var user_id: Int
        var name: String
        
        static func endpointForUsers() -> String {
            return "users.php"
          
        }
    }
}

func userNames(_ users: [User]) -> [String] {
    return users.map { $0.name }
}

(为了清楚起见,我以函数的形式编写了答案,但考虑到这是一行代码,因此在代码中内联使用 map 语句可能会更干净、更简单。)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.