gpt4 book ai didi

swift - 开关 : Enum Switch issue : Not member of a int

转载 作者:IT王子 更新时间:2023-10-29 05:09:50 24 4
gpt4 key购买 nike

我正在用 Swift 编写我的第一个项目(我多年来一直在使用 ObjectiveC),出于某种原因,我无法弄清楚为什么我的枚举和 Switch 不能一起工作

enum ContactViewMode : Int
{
case ViewModeFavourite = 0
case ViewModeRecent = 1
case ViewModeContacts = 2
}

属性

 @IBInspectable var contactViewMode : Int!

切换

switch contactViewMode {
case ContactViewMode.ViewModeFavourite:
contacts = DBManager.getFavouriteContacts() as [ContactEntity]
case ContactViewMode.ViewModeRecent:
contacts = DBManager.getFavouriteContacts() as [ContactEntity]
default:
contacts = DBManager.getAllContacts() as [ContactEntity]
}

我得到的错误是枚举案例“ViewModeFavourite”不是“Int!”类型的成员

所以我把它改成了这个,因为它不是 Int! (我需要 Int!用于 Storyboard)

var contactMode:Int = contactViewMode

switch contactMode {
case .ViewModeFavourite:
contacts = DBManager.getFavouriteContacts() as [ContactEntity]
case .ViewModeRecent:
contacts = DBManager.getFavouriteContacts() as [ContactEntity]
default:
contacts = DBManager.getAllContacts() as [ContactEntity]
}

然后我明白了 枚举大小写模式不能匹配非枚举类型“Int”的值

最佳答案

您必须将 contactViewMode 声明为 ContactViewMode 而不是 Int

如果您真的希望它是 Int,那么您必须通过将变量与枚举 cases 的 rawValue 属性进行比较来更改 switch 中的 cases:

switch contactViewMode {
case ContactViewMode.ViewModeFavourite.rawValue:
contacts = DBManager.getFavouriteContacts() as [ContactEntity]
case ContactViewMode.ViewModeRecent.rawValue:
contacts = DBManager.getFavouriteContacts() as [ContactEntity]
default:
contacts = DBManager.getAllContacts() as [ContactEntity]
}

但除非你有充分的理由,否则我不会推荐

关于swift - 开关 : Enum Switch issue : Not member of a int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26907204/

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