相关疑难解决方法(0)

Swift:无法将AnyObject向下转换为SKPhysicsBody

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)

arrays casting ios sprite-kit swift

7
推荐指数
2
解决办法
1734
查看次数

标签 统计

arrays ×1

casting ×1

ios ×1

sprite-kit ×1

swift ×1