gpt4 book ai didi

ios - Swift - 将 Int 转换为枚举 :Int

转载 作者:IT王子 更新时间:2023-10-29 04:55:46 25 4
gpt4 key购买 nike

我是 Swift 的新手(本周开始使用),我正在从 Objective-C 迁移我的应用程序。我在 Objective-C 中基本上有以下代码可以正常工作:

typedef enum : int {
MyTimeFilter1Hour = 1,
MyTimeFilter1Day = 2,
MyTimeFilter7Day = 3,
MyTimeFilter1Month = 4,
} MyTimeFilter;

...

- (void)selectFilter:(id)sender
{
self.timeFilterSelected = (MyTimeFilter)((UIButton *)sender).tag;
[self closeAnimated:YES];
}

将它翻译成 Swift 时,我做了以下事情:

enum MyTimeFilter : Int {
case OneHour = 1
case OneDay = 2
case SevenDays = 3
case OneMonth = 4
}

...

@IBAction func selectFilter(sender: AnyObject) {
self.timeFilterSelected = (sender as UIButton).tag as MyTimeFilter
self.close(true)
}

通过这样做,我得到了错误:

'Int' is not convertible to 'MyTimeFilter'

我不知道我的方法(使用 tag 属性)是否最好,但无论如何我需要在我的应用程序的不同位置进行这种转换。有谁知道如何消除此错误?

谢谢!

最佳答案

使用 rawValue 初始化器:它是为 enum 自动生成的初始化器。

self.timeFilterSelected = MyTimeFilter(rawValue: (sender as UIButton).tag)!

参见:The Swift Programming Language § Enumerations


注意:此答案已更改。早期版本的 Swift 使用类方法 fromRaw() 将原始值转换为枚举值。

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

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