class SomeClass {
class var category: Int {
return 1class SomeClass {
class var category: Int {
return 1
}
}
class AnotherClass {
var someClass: SomeClass!
init() {
someClass = SomeClass()
}
}
var a = AnotherClass()
println("\(a.someClass.dynamicType.category)") // error: SomeClass!.Type does not have a member named category
println("\(SomeClass.category)") // print 1
当然我可以使用SomeClass.category, 这里只是一个展示问题的例子。 当我不知道a.someClass的确切类型时,例如继承,我该怎么办呢?
答案 0 :(得分:2)
你可以:
println("\(a.someClass!.dynamicType.category)")
与普通会员访问不同,.dynamicType
不会隐式展开ImplicitlyUnwrappedOptional
在您的情况下,a.someClass
为ImplicitlyUnwrappedOptional<SomeClass>
,ImplicitlyUnwrappedOptional<T>
没有.category
静态成员。
因此,您必须使用a.someClass!