检测对象是否完全是特定类型,而不是swift中该类型的子类

nac*_*oss 9 types conditional-statements swift

在swift中,您可以使用类似于以下内容的方法检查对象是否属于特定类型

let object: AnyObject = someOtherObject
if object is SKNode {
   //is SKNode
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,SKShapeNode和SKSpriteNode也会满足这个条件,因为它们是SKNode的子类.

检测对象是否属于特定类型而不是该类型的子类的标准方法是什么?

Ash*_*lls 10

你可以回到Objective-C:

if (object as AnyObject).isMemberOfClass(SKNode) {
   //is SKNode
}
Run Code Online (Sandbox Code Playgroud)


ink*_*ket 6

Apple批准的在Swift 2.2中执行此操作的方法是:

if object.dynamicType === SKNode.self {
   // is node
}
Run Code Online (Sandbox Code Playgroud)

一旦这个提议得到实施(Swift 3.0),它将改为:

if object.Self === SKNode.self {
   // is node
}
Run Code Online (Sandbox Code Playgroud)