Apple在SKPhysicsBody类中有以下方法.
/* Returns an array of all SKPhysicsBodies currently in contact with this one */
func allContactedBodies() -> [AnyObject]!
Run Code Online (Sandbox Code Playgroud)
我注意到它返回一个AnyObject数组.所以我读到了如何处理AnyObject Here
我想循环遍历物理主体的allContactedBodies数组.问题是,无论我尝试什么,我都无法让事情发挥作用.
我先试了一下:
for body in self.physicsBody.allContactedBodies() as [SKPhysicsBody] {
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误.
致命错误:数组不能向下转换为派生数组
我也试过这个:
for object in self.physicsBody.allContactedBodies() {
let body = object as SKPhysicsBody
}
Run Code Online (Sandbox Code Playgroud)
但是这也崩溃了以下:

同样我试过这个:
for object in self.physicsBody.allContactedBodies() {
let body = object as? SKPhysicsBody
}
Run Code Online (Sandbox Code Playgroud)
没有崩溃,但"身体"变成零.
如果我根本不投,我不会崩溃.例如:
for object in self.physicsBody.allContactedBodies() {
}
Run Code Online (Sandbox Code Playgroud)
但显然我需要强制转换,如果我想使用实际类型.
那么作为测试,我只是尝试了这个:
let object: AnyObject = SKPhysicsBody()
let body = object as …Run Code Online (Sandbox Code Playgroud)