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"]