我有两个language
的类,要在运行时在不同条件下使用。
我想根据条件在一个变量中获得两个类的对象。但是,我遇到了错误。
var constantCL = LanguageEnglish()
if languageType == Constants.LoginParameters.LANGUAGE_CODE_ENGLISH {
constantCL = LanguageEnglish()
} else {
constantCL = LanguageHindi()
}
在我的constantCL = LanguageHindi()
中的else
上遇到此错误:
不能将类型为“ LanguageHindi”的值分配为类型为“ LanguageEnglish”
错误截图:
答案 0 :(得分:2)
这是一种预期的行为,因为您的语言是一门实际的课,而不是更加灵活的语言。
可能的解决方案:
为您的语言使用超类,例如
class LanguageEnglish: Language { }
class LanguageHindi: Language { }
var constantCL: Language = LanguageEnglish()
改为使用协议,并在您的语言类中实现该协议(与上面几乎相同,不同之处在于实现和声明):
class LanguageEnglish: Language { }
class LanguageHindi: Language { }
var constantCL: Language = LanguageEnglish()
或者使用枚举表示您的语言,或者在满足您需要的情况下,采用类似的更优雅的构造:
enum Language {
case english
case hindi
// Other useful stuff
}
var constantCL: Language = .english
constantCL = .hindi