gpt4 book ai didi

ios - Swift 整数类型转换为枚举

转载 作者:IT王子 更新时间:2023-10-29 05:46:00 33 4
gpt4 key购买 nike

我有一个 enum 声明。

enum OP_CODE {
case addition
case substraction
case multiplication
case division
}

并在方法中使用它:

func performOperation(operation: OP_CODE) {

}

我们都知道怎么才能正常调用这个

self.performOperation(OP_CODE.addition)

但是如果我必须在某个整数值不可预测的委托(delegate)中调用它,我该如何调用它?

例如:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.delegate.performOperation(indexPath.row)
}

在这里,编译器抛出错误Int is not convertible to 'OP_CODE'。我尝试了很多排列,但一直没能弄明白。

最佳答案

您需要指定枚举的原始类型

enum OP_CODE: Int {
case addition, substraction, multiplication, division
}

addition原始值为 0 , substraction1 , 等等。

然后你可以做

if let code = OP_CODE(rawValue: indexPath.row) {
self.delegate.performOperation(code)
} else {
// invalid code
}

更多信息在这里:https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/Enumerations.html#//apple_ref/doc/uid/TP40014097-CH12-XID_222


对于较旧的 swift 版本

如果您使用的是旧版本的 swift,原始枚举的工作方式会有些不同。在 Xcode < 6.1 中,你必须使用 fromRaw()而不是可失败的初始化器:

let code = OP_CODE.fromRaw(indexPath.row)

关于ios - Swift 整数类型转换为枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27168685/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com