【发布时间】:2017-05-25 12:34:07
【问题描述】:
我已经构建了这个struct 来处理我计划在一些自定义类中使用的特定类型的数据。
我的问题是 featureSubSet 变量能够成为少数枚举之一,当这个结构被初始化时,它不知道它将是哪个枚举,所以我将它声明为 Any。
当调用公共 init 时,它会适当地将数据汇集到所需的私有 init 方法中,以便它可以正确且完全地初始化。
我在公共 init 方法结束时收到错误,但我不知道如何让它消失。
struct Feature {
//MARK: Variables needed for Feature
var featureSet: FeatureType
var featureSubSet: Any
var effect: String
var active: Bool?
var skill: Skill?
var ability: Ability?
public init(base: String, sub: String, effect: String, skill: Skill? = nil, ability: Ability? = nil) {
switch base {
case featureCategoryList()[0]: // Character Features
self.init(CharacterFeature: sub, effect: effect)
case featureCategoryList()[1]: // Combat Features
self.init(CombatFeature: sub, effect: effect)
case featureCategoryList()[2]: //Skill Features
guard let newSkill = skill else {
print("No skill")
return
}
self.init(SkillFeature: sub, effect: effect, skill: newSkill)
default:
print("Somehow you picked something not on the list.")
break
}
}
private init(CharacterFeature sub: String, effect: String) {
self.featureSet = .CharacterFeatures
self.featureSubSet = CharacterFeatures.init(rawValue: sub)!
self.effect = effect
}
private init(CombatFeature sub: String, effect: String) {
self.featureSet = .CombatFeatures
self.featureSubSet = CharacterFeatures.init(rawValue: sub)!
self.effect = effect
}
private init(SkillFeature sub: String, effect: String, skill: Skill) {
self.featureSet = .SkillFeatures
self.featureSubSet = CharacterFeatures.init(rawValue: sub)!
self.skill = skill
self.effect = effect
}
//MARK: Feature functions
func string() -> String {
//TODO: Make a string output for what the feature is.
return ""
}
}
【问题讨论】:
-
你遇到了什么错误?
标签: swift