Swift:将枚举值转换为String?

21 浏览
0 Comments

Swift:将枚举值转换为String?

给定以下枚举:

enum Audience {

case Public

case Friends

case Private

}

如何从下面的audience常量中获得字符串"Public"

let audience = Audience.Public

0
0 Comments

问题的原因是在Swift中,如果要将枚举值转换为字符串,传统的方法是使用字符串插值或字符串初始化器。然而,这种方法在某些情况下可能会导致意外结果。

解决方法是使用Swift 3中引入的新特性,通过使用String(describing:)方法来将枚举值转换为字符串。这种方法非常有用,特别是当枚举类型不是基于字符串时。

例如,可以使用以下代码将枚举值Customer.Physics转换为字符串:

var enumValue = Customer.Physics

var str = String(describing: enumValue)

另外,某些情况下使用"\(enumValue)"也可以实现相同的效果。但是,String(describing:)方法更好,因为它不需要将枚举类型定义为字符串类型。

然而,也有人对使用String(describing:)方法进行字符串转换提出了异议。他们认为这种方法的目的并不是进行严格的类型转换,而是用于调试和反射。使用这种方法可能会导致未定义和误导性的结果。

总之,虽然String(describing:)方法可以将任何类型的实例转换为字符串,但它的用途应该局限于调试和反射,而不是严格的类型转换。如果需要进行严格的类型转换,最好使用传统的字符串插值或字符串初始化器的方式。

0
0 Comments

问题:如何将枚举值转换为字符串?

在Swift中,当使用字符串作为原始值时,每个枚举值的隐式值是该值的名称的文本。我们可以通过rawValue属性访问枚举值的原始值。

解决方法是通过扩展枚举类型,添加一个自定义的计算属性,将枚举值转换为字符串。具体代码如下:

extension Audience {

var toString: String {

switch self {

case .public:

return "public"

case .friends:

return "friends"

case .private:

return "private"

}

}

}

这样,我们就可以通过枚举值调用toString属性来获取其对应的字符串表示。例如:

let audience = Audience.public

let audienceString = audience.toString // "public"

这个方法适用于将枚举值转换为任意类型的字符串,不仅仅是String类型。

注意:以上方法只适用于枚举值是字符串类型的情况。如果枚举值是其他类型(如Int),则需要根据具体情况自行实现转换。

0
0 Comments

问题的原因是,用户想要将一个枚举值转换成对应的字符串表示。解决方法是使用CustomStringConvertible接口,并访问description属性。通过在枚举类型中定义description属性,可以避免使用字符串比较和实现国际化。同时,通过使用CustomStringConvertible,枚举类型可以采用不同的原始类型,这种灵活性可能会很有用。另外还提供了一个更简洁的方法来创建println字符串。最后,还有用户问是否可以通过字符串匹配枚举类型的description属性来获取对应的枚举值,其他用户解答了这个问题,并表示感谢。

0