我知道你可以给enum提供String或Int ect的rawvalue,但有没有办法让它的类型像AnyClass一样
enum Name:AnyClass{
case classOne = ClassOne
case classTwo = ClassTwo
}
ClassOne和ClassTwo是类。我得到的错误是:
原始类型'AnyClass'不能从任何文字
转换
那么有另一种方法可以达到这个目的吗?
答案 0 :(得分:2)
那么有另一种方法来实现这一目标吗?
我不知道"这个"是的,但就Swift语法而言,规则很简单。这样:
enum Name:AnyClass {
是非法的。只允许String和Int作为原始值类型(并且只允许String和Int文字作为大小写值)。
答案 1 :(得分:0)
例如解决方法
typealias MyTypeData = (title: String, iconName: String)
enum MyType: String {
case Test1
case Test2
private var data: MyTypeData {
switch self {
case .Test1: return (title: "One", iconName: "icn1")
case .Test2: return (title: "Two", iconName: "icn2")
}
}
var title: String { get { return data.title } }
var icon: UIImage? { get { return UIImage(named: data.iconName) } }
}
或者你可以试试
enum MyType: String {
case Test1(data:OneClass)
case Test2(data:TwoClass)
}