作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在用 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/
我是一名优秀的程序员,十分优秀!