相关疑难解决方法(0)

Swift:将枚举值转换为String?

鉴于以下枚举:

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)

string enums swift

120
推荐指数
12
解决办法
9万
查看次数

Swift枚举可以有多个原始值吗?

我想将两个原始值关联到枚举实例(想象一个表示错误类型的枚举,我想要Error.Teapot一个code值为418 的Int类型属性,并将String属性设置为I'm a teapot.)

请注意原始值关联值之间的差异- 我希望所有Teapot实例都有code418,我不希望每个Teapot实例都有唯一的关联值.

有没有比将计算属性添加到枚举的更好的方法switch,self以便查找适当的值?

enums enumeration swift

18
推荐指数
2
解决办法
1万
查看次数

如何获取rawType为Int的枚举的字符串大小写

我想要列举一些国家,例如:

enum Country: Int {
    case Afghanistan
    case Albania
    case Algeria
    case Andorra
    //...
}
Run Code Online (Sandbox Code Playgroud)

我选择IntrawValue类型有两个主要原因:

  1. 我想确定这个枚举的总数,使用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)
  2. 我还需要一个代表一个国家的复杂数据结构,并且有一个数组结构的数组.我可以使用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)

enums swift

9
推荐指数
1
解决办法
2723
查看次数

在Swift 3中获取ObjC枚举的名称?

如果一个ObjC函数返回一个带枚举的状态值,有没有办法在Swift 3中获取枚举的字符串?如果我这样做debugPrint("\(status)"),或者print("\(status)")我只是得到枚举的名称而不是值.如果我这样做status.rawValue,我会得到int,但解释并不多.

objective-c swift3

6
推荐指数
2
解决办法
1031
查看次数

如何通过 Swift 4 中的原始值获取枚举案例的名称?

使用 Xcode 9.4.1 和 Swift 4.1

有一个来自 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,一

enums ios swift

6
推荐指数
2
解决办法
3225
查看次数

如何在 Swift 枚举中打印关联值?

我正在寻找一种在 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)

enumeration swift

5
推荐指数
1
解决办法
1561
查看次数

标签 统计

swift ×5

enums ×4

enumeration ×2

ios ×1

objective-c ×1

string ×1

swift3 ×1