gpt4 book ai didi

swift - 无法将类型 'String' 的值转换为预期的参数类型 'SKNode'

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:55 24 4
gpt4 key购买 nike

最后一行有问题。我该如何解决?问题说“无法将‘字符串’类型的值转换为预期的参数类型‘SKNode’。 '' 这是我的代码:

import SpriteKit

let BallCategoryName = "ball"

class GameScene: SKScene {

let ball = childNodeWithName(BallCategoryName) as! SKSpriteNode

最佳答案

问题

您在对象初始化之前使用self

事实上写这个

let ball = childNodeWithName(BallCategoryName) as! SKSpriteNode

等于写这个

let ball = self.childNodeWithName(BallCategoryName) as! SKSpriteNode

但是在属性初始化期间,GameScene 的当前实例还不存在!所以还没有self

这是一件好事,因为如果编译允许此代码,它会在运行时崩溃,因为 Scene 中还没有 ball 节点(再次因为还没有场景)。

解决方案

我建议你

  1. 将您的存储属性变成计算属性
  2. 使用小写字符作为属性的名字,例如ballCategoryName
  3. 更喜欢条件转换(as?而不是as!)
  4. 将全局常量 ballCategoryName 转换为存储属性

代码

class GameScene: SKScene {
let ballCategoryName: String = "ball"
var ball: SKSpriteNode? {
return childNodeWithName(ballCategoryName) as? SKSpriteNode
}
}

关于swift - 无法将类型 'String' 的值转换为预期的参数类型 'SKNode',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35534749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com