Swift枚举,是否将该值设置为项的名称?

Swift枚举,是否将该值设置为项的名称?,swift,Swift,我正在解析文件中的字符串。其中一个字符串的值与颜色枚举中的名称相同。例如,枚举包含Purple,其中一个字符串可能是“Purple”。我知道有一种方法可以使用rawValue(等)根据枚举项的值来选择枚举项,但是名称是否有类似之处?这是枚举 enum Colors: Int { case White = 0 case Red case Orange case Yellow case Green case Cyan case Blue case Purple } 我将赞同这样的想

我正在解析文件中的字符串。其中一个字符串的值与颜色枚举中的名称相同。例如,枚举包含
Purple
,其中一个字符串可能是
“Purple”
。我知道有一种方法可以使用
rawValue
(等)根据枚举项的值来选择枚举项,但是名称是否有类似之处?这是枚举

enum Colors: Int {
 case White = 0
 case Red
 case Orange
 case Yellow
 case Green
 case Cyan
 case Blue
 case Purple
}

我将赞同这样的想法,即枚举具有Int原始值,但现在您希望通过字符串查找案例。(如果您知道要按字符串查找案例,那么很难理解为什么不首先提供枚举字符串的原始值。但是,正如我所说,我将继续玩下去,只是为了好玩。)

所以。。。请记住,枚举与其他类型一样是对象类型。因此,您可以给它一个自定义方法

因此,您可以使用一种方法,从字符串数组开始,例如
[“白色”、“红色”、“橙色”…]
,使用
查找字符串,从而为您提供一个索引号,并使用该索引号作为原始值以达到所需的大小写

enum Colors: Int {
    case White = 0
    case Red
    case Orange
    case Yellow
    case Green
    case Cyan
    case Blue
    case Purple
    static func byString(s:String) -> Colors? {
        let arr = ["White", "Red", "Orange", "Yellow", "Green", "Cyan", "Blue", "Purple"]
        let ix = find(arr, s)
        if ix == nil {
            return nil
        }
        return Colors(rawValue:ix!)
    }
}
现在你可以这样说:

let c = Colors.byString("Red")

我将赞同这样的想法,即枚举具有Int原始值,但现在您希望通过字符串查找案例。(如果您知道要按字符串查找案例,那么很难理解为什么不首先提供枚举字符串的原始值。但是,正如我所说,我将继续玩下去,只是为了好玩。)

所以。。。请记住,枚举与其他类型一样是对象类型。因此,您可以给它一个自定义方法

因此,您可以使用一种方法,从字符串数组开始,例如
[“白色”、“红色”、“橙色”…]
,使用
查找字符串,从而为您提供一个索引号,并使用该索引号作为原始值以达到所需的大小写

enum Colors: Int {
    case White = 0
    case Red
    case Orange
    case Yellow
    case Green
    case Cyan
    case Blue
    case Purple
    static func byString(s:String) -> Colors? {
        let arr = ["White", "Red", "Orange", "Yellow", "Green", "Cyan", "Blue", "Purple"]
        let ix = find(arr, s)
        if ix == nil {
            return nil
        }
        return Colors(rawValue:ix!)
    }
}
现在你可以这样说:

let c = Colors.byString("Red")

我将赞同这样的想法,即枚举具有Int原始值,但现在您希望通过字符串查找案例。(如果您知道要按字符串查找案例,那么很难理解为什么不首先提供枚举字符串的原始值。但是,正如我所说,我将继续玩下去,只是为了好玩。)

所以。。。请记住,枚举与其他类型一样是对象类型。因此,您可以给它一个自定义方法

因此,您可以使用一种方法,从字符串数组开始,例如
[“白色”、“红色”、“橙色”…]
,使用
查找字符串,从而为您提供一个索引号,并使用该索引号作为原始值以达到所需的大小写

enum Colors: Int {
    case White = 0
    case Red
    case Orange
    case Yellow
    case Green
    case Cyan
    case Blue
    case Purple
    static func byString(s:String) -> Colors? {
        let arr = ["White", "Red", "Orange", "Yellow", "Green", "Cyan", "Blue", "Purple"]
        let ix = find(arr, s)
        if ix == nil {
            return nil
        }
        return Colors(rawValue:ix!)
    }
}
现在你可以这样说:

let c = Colors.byString("Red")

我将赞同这样的想法,即枚举具有Int原始值,但现在您希望通过字符串查找案例。(如果您知道要按字符串查找案例,那么很难理解为什么不首先提供枚举字符串的原始值。但是,正如我所说,我将继续玩下去,只是为了好玩。)

所以。。。请记住,枚举与其他类型一样是对象类型。因此,您可以给它一个自定义方法

因此,您可以使用一种方法,从字符串数组开始,例如
[“白色”、“红色”、“橙色”…]
,使用
查找字符串,从而为您提供一个索引号,并使用该索引号作为原始值以达到所需的大小写

enum Colors: Int {
    case White = 0
    case Red
    case Orange
    case Yellow
    case Green
    case Cyan
    case Blue
    case Purple
    static func byString(s:String) -> Colors? {
        let arr = ["White", "Red", "Orange", "Yellow", "Green", "Cyan", "Blue", "Purple"]
        let ix = find(arr, s)
        if ix == nil {
            return nil
        }
        return Colors(rawValue:ix!)
    }
}
现在你可以这样说:

let c = Colors.byString("Red")

不,没有。为什么不给枚举字符串原始值呢?这正是他们的目的!使用Int原始值而不是字符串原始值还有其他一些真正好的理由吗?没有。为什么不给枚举字符串原始值呢?这正是他们的目的!使用Int原始值而不是字符串原始值还有其他一些真正好的理由吗?没有。为什么不给枚举字符串原始值呢?这正是他们的目的!使用Int原始值而不是字符串原始值还有其他一些真正好的理由吗?没有。为什么不给枚举字符串原始值呢?这正是他们的目的!使用Int原始值而不是字符串原始值还有其他一些真正好的理由吗?这正是我想要的。为什么?我知道我可以用一个案例陈述来做这件事,但我想学习swift,这正是我想知道的事情。枚举中的函数?我需要知道这件事!在我的书中有很多例子:如果使用可选绑定,它看起来会更快一些:
如果让ix=find(arr,s){…
-很抱歉告诉你你已经知道的:)-或者
返回颜色(rawValue:find(arr,s)?-1)
这正是我想要的东西。为什么?我知道我可以用case语句来实现这一点,但我想学习swift,这正是我想知道的事情。枚举中的函数?我需要知道这些东西!我的书中有很多例子:如果让它使用可选绑定,它看起来会更快速:
ix=find(arr,s){…
–很抱歉告诉您您已经知道的:)–或者
返回颜色(rawValue:find(arr,s)??-1)
这正是我想要的东西。为什么?我知道我可以用case语句来实现这一点,但我想学习swift,这正是我想知道的事情。枚举中的函数?我需要知道这些东西!我的书中有很多例子:如果让它使用可选绑定,它看起来会更快速:
ix=find(arr,s){…
–很抱歉告诉您您已经知道的:)–或者
返回颜色(rawValue:find(arr,s)??-1)
这正是我要找的东西。为什么?我知道我可以用case语句来实现这一点,但我想学习swift,而这正是我想知道的东西。枚举中的函数?我需要知道这些东西!我书中有很多例子:使用opti看起来会更快速一些