【发布时间】:2018-07-19 22:53:11
【问题描述】:
一直在尝试在 Android (Kotlin) 中复制 iOS (Swift) 解决方案。这相当简单,但我不确定我是否走在正确的轨道上,或者我是否需要完全更改我的 Kotlin 代码。 (注意这个解决方案在 Swift 中运行)
这是 Swift 中发生的事情:
enum CarID: String, Codable {
case carHeader
case carView
case dataView
var viewControllerType: UIViewController.Type {
switch self {
case .carView: return CarViewController.self
case .carHeader: return CarHeaderViewController.self
case .dataView: return DataViewController.self
}
}
}
现在我尝试在 Kotlin 中匹配它:
enum class ModuleID(val type: String) {
CAR_HEADER("carHeader"),
CAR_VIEW("carView"),
DATA_VIEW("dataView");
val activityType: AppCompatActivity // Wrong return type?
get() = when(this) {
CAR_HEADER -> **CarHeader** // Error here
CAR_VIEW -> CarView
DATA_VIEW -> DataView
}
}
注意我只是想使用 ActivityViewTypes,就像 iOS 使用 viewControllerType。行为应该接近准确。
我看到的错误是:“分类器 'CarHeader' 没有伴随对象,因此必须在此处初始化。”
我试图创建所说的伴随对象,但似乎没有必要,所以我放弃了。欢迎任何建议!我也考虑过研究密封类,但也不确定这里是否有必要。
我也没有提到“可编码”——如果有人想深入研究,那也很好。
谢谢!
【问题讨论】:
标签: android ios swift variables kotlin