Arrays 将枚举数组转换为其代表字符串数组
我需要一个Arrays 将枚举数组转换为其代表字符串数组,arrays,swift,generics,enums,Arrays,Swift,Generics,Enums,我需要一个Array(或Set)扩展方法,该方法可以将Enum:String值数组快速转换为实际String值数组。我该怎么做呢 例如,我有: enum Scope: String { case appPrivate = "app-private" case appLimited = "app-limited" case appPublic = "app-public" } let scopes: Set<Scope> = [.appPrivate, .ap
Array
(或Set
)扩展方法,该方法可以将Enum:String
值数组快速转换为实际String
值数组。我该怎么做呢
例如,我有:
enum Scope: String
{
case appPrivate = "app-private"
case appLimited = "app-limited"
case appPublic = "app-public"
}
let scopes: Set<Scope> = [.appPrivate, .appLimited, .appPublic]
enum作用域:字符串
{
case appPrivate=“app private”
case appLimited=“应用有限公司”
case appPublic=“app public”
}
let作用域:Set=[.appPrivate、.appLimited、.appPublic]
然后我需要在以后的时间点(例如发送到服务器端点)获取一个数组/集合
[“应用程序专用”、“应用程序有限”、“应用程序公用”]
。您应该使用CaseIterable
协议
举个例子:
enum Scope: String, CaseIterable {
case appPrivate = "app-private"
case appLimited = "app-limited"
case appPublic = "app-public"
}
let array = Scope.allCases.map { $0.rawValue }
如果不希望包含所有枚举值,并且需要创建仅包含少数枚举值的数组,则可以执行以下操作
let scopeArray: [Scope] = [.appLimited, .appPrivate]
print(scopeArray.map({$0.rawValue})) //["app-limited", "app-private"]
提示:
map
和rawValue
@maddy好的,但是通用枚举呢?听起来像是家庭作业。请展示一下你们的尝试和表现。我记得上一次这么做是一个有用的渠道,而不是一个家庭作业网站。如果非核心、复杂的代码问题困扰着你,那么为什么不忽略它们呢?!:)但是如果我们都应该自己解决问题,那么我想我们就不需要这样了。但是这会把所有的枚举值映射到一个数组,不是吗?我需要的是映射在特定枚举数组中找到的值(如上面的示例)。上面打印的正是您在问题中要查找的内容:[“app private”、“app limited”、“app public”]
如果这对您不起作用,您能否澄清您要查找的内容?@valosip True,我应该更清楚。我需要任意数量的枚举值数组的值。该数组可能包含全部或更少或仅一个枚举值。请为我剪切它,谢谢!关键的部分是CaseIterable
@baddington你对这个答案的评论与另一个答案相互矛盾。我对您问题的理解表明您不需要caseitrable
。这个答案中唯一能回答您实际提出的问题的部分是第二部分,它不需要使用caseitrable
。
let scopeArray: [Scope] = [.appLimited, .appPrivate]
print(scopeArray.map({$0.rawValue})) //["app-limited", "app-private"]