在这段代码中,我写了一个非常无用的枚举,Number用Int或Float 定义了一个可能的.
我无法理解如何访问我使用关联设置的值.如果我尝试打印它,我会得到(Enum Value)
enum Number {
case int (Int)
case float (Float)
}
let integer = Number.int(10)
let float = Number.float(10.5)
println("integer is \(integer)")
println("float is \(float)")
Run Code Online (Sandbox Code Playgroud) 我已定义enum如下:
enum Type: String, Codable {
case text = "text"
case image = "image"
case document = "document"
case profile = "profile"
case sign = "sign"
case inputDate = "input_date"
case inputText = "input_text"
case inputNumber = "input_number"
case inputOption = "input_option"
case unknown
}
Run Code Online (Sandbox Code Playgroud)
映射JSON字符串属性.自动序列化和反序列化工作正常,但我发现如果遇到不同的字符串,反序列化将失败.
是否可以定义一个unknown映射任何其他可用案例的案例?
这可能非常有用,因为这些数据来自RESTFul API,可能会在将来发生变化.
Swift问题是有一种方法可以使用一个具有相关值的案例的枚举类型.
我有一个API,它提供了可用的过滤器,它不太可能,但API可能会添加其他过滤器类型.因此,如果API发送未知的过滤器类型,我希望保留与枚举相关联的信息.
以下是我对此做出的不同想法.
我的前两次尝试没有编译.我的第三次尝试感觉有点笨重.
有没有人有更好的方法这样做?你认为我不应该使用enum来解决这个问题吗?
typealias APIFilterIdentifier = String
/* Does Not Compile */
enum EnumTestAssociatedValeu: APIFilterIdentifier {
case Unknown(APIFilterIdentifier)
case Everyone = "everyone"
case Team = "myteam"
}
/* Does not compile */
enum EnumTestDefaultAssociatedValues: APIFilterIdentifier {
case Unknown(APIFilterIdentifier)
case Everyone(APIFilterIdentifier = "everyone")
case Team(APIFilterIdentifier = "myteam")
}
/* Compiles but is there a better way? */
enum EnumTestWithCustomInit {
case Unknown(APIFilterIdentifier)
case Everyone
case Team
init(filterIdentifier: APIFilterIdentifier) {
let everyone: APIFilterIdentifier = EnumTestWithCustomInit.everyoneFilterIdentifier
let team: APIFilterIdentifier = EnumTestWithCustomInit.teamFilterIdentifier …Run Code Online (Sandbox Code Playgroud)