鉴于以下枚举:
enum Audience {
case Public
case Friends
case Private
}
Run Code Online (Sandbox Code Playgroud)
如何"Public"从audience下面的常量中获取字符串?
let audience = Audience.Public
Run Code Online (Sandbox Code Playgroud) 我想要列举一些国家,例如:
enum Country: Int {
case Afghanistan
case Albania
case Algeria
case Andorra
//...
}
Run Code Online (Sandbox Code Playgroud)
我选择IntrawValue类型有两个主要原因:
我想确定这个枚举的总数,使用IntrawValue类型简化了这个:
enum Country: Int {
case Afghanistan
// other cases
static let count: Int = {
var max: Int = 0
while let _ = Country(rawValue: max) { max = max + 1 }
return max
}()
}
Run Code Online (Sandbox Code Playgroud)我还需要一个代表一个国家的复杂数据结构,并且有一个数组结构的数组.我可以使用Int-valued枚举轻松地从这个数组下标访问某个国家/地区.
struct CountryData {
var population: Int
var GDP: Float
}
var countries: [CountryData]
print(countries[Country.Afghanistan.rawValue].population)
Run Code Online (Sandbox Code Playgroud)现在,我不知何故需要将某个Country案例转换为String(也就是说
let a …Run Code Online (Sandbox Code Playgroud) 如果一个ObjC函数返回一个带枚举的状态值,有没有办法在Swift 3中获取枚举的字符串?如果我这样做debugPrint("\(status)"),或者print("\(status)")我只是得到枚举的名称而不是值.如果我这样做status.rawValue,我会得到int,但解释并不多.
有一个来自 Int 类型的多个案例的枚举,我如何通过它的 rawValue 打印案例名称?
public enum TestEnum : UInt16{
case ONE = 0x6E71
case TWO = 0x0002
case THREE = 0x0000
}
Run Code Online (Sandbox Code Playgroud)
我通过 rawValue 访问枚举:
print("\nCommand Type = 0x" + String(format:"%02X", someObject.getTestEnum.rawValue))
/*this prints: Command Type = 0x6E71
if the given Integer value from someObject.TestEnum is 28273*/
Run Code Online (Sandbox Code Playgroud)
现在我还想在十六进制值后打印“ONE”。
我知道这个问题:如何在 Swift 中获取枚举值的名称? 但这是不同的,因为我想通过案例原始值而不是枚举值本身来确定案例名称。
期望输出:
命令类型 = 0x6E71,一
我正在寻找一种在 Swift 中打印关联枚举值的方法。IE。以下代码应该"ABCDEFG"为我打印,但它没有。
enum Barcode {
case UPCA(Int, Int, Int, Int)
case QRCode(String)
}
var productCode = Barcode.QRCode("ABCDEFG")
println(productCode)
// prints (Enum Value)
Run Code Online (Sandbox Code Playgroud)
阅读这个stackoverflow 问题的答案,它与打印枚举的原始值有关,我尝试了以下代码,但它给了我一个错误
enum Barcode: String, Printable {
case UPCA(Int, Int, Int, Int)
case QRCode(String)
var description: String {
switch self {
case let UPCA(int1, int2, int3, int4):
return "(\(int1), \(int2), \(int3), \(int4))"
case let QRCode(string):
return string
}
}
}
var productCode = Barcode.QRCode("ABCDEFG")
println(productCode)
// prints error: enum cases require explicit raw …Run Code Online (Sandbox Code Playgroud)