swift - 解包可选错误时意外发现 nil

标签 swift

我正在制作一个基于 Sprite 的游戏。在将物理学应用于我的硬币 Sprite 时,我开始遇到这个错误。关于如何避免它有什么建议吗?

@objc func spawnEnemy(){
    enemy = childNode(withName: "enemy") as? SKSpriteNode
    coin = childNode(withName: "coin") as? SKSpriteNode
    self.physicsWorld.contactDelegate = self

及以后

 for coin in sprites{
    if coin.name == "coin"{
        coin.physicsBody = SKPhysicsBody(rectangleOf: enemy.size)
        coin.physicsBody?.categoryBitMask = PhysicsCategory.coin
          coin.physicsBody?.contactTestBitMask =           PhysicsCategory.player
        coin.physicsBody?.affectedByGravity = false
        coin.physicsBody?.isDynamic = true
        }
}

最佳答案

您应该始终使用“if let”或“guard let”安全地解开可选值

通过使用 if let :

   if let coin = coin , let name = coin.name { 
    // you can use "coin" or "name" safely here
   }else{
     // "coin" or "name" is nil
   }

通过使用guard let:

   guard let coin = coin , let name = coin.name  else { 
     // "coin" or "name" is nil
    return
    }
    //you can use "coin" or "name" safely here

关于swift - 解包可选错误时意外发现 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55428447/

相关文章:

ios - 线程安全队列

ios - 在 Swift 中更改 ViewController 类名称的正确方法是什么?

ios - 动画单元格不止一次

ios - Xcode: EXC_BREAKPOINT (EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe)

ios - 在 Swift 中按下 Switch 后条形按钮为零?

ios - 如何在处理 catchError 后恢复数据源

ios - Swift iOS - 游戏重置时角色动画静态

ios - 如何在 Swift 中创建类似电子表格的表格?

swift - 调用中的无关参数标签 'path:'

ios - 如何将实际数据从一个闭包获取到另一个闭包?