gpt4 book ai didi

Swift SpriteKit : Thread 1: signal SIGABRT. 无法转换 SKLabelNode 类型的值?

转载 作者:行者123 更新时间:2023-11-30 14:05:59 25 4
gpt4 key购买 nike

所以我正在完成一个项目,当我运行它时,它崩溃了,我收到了 Thread 1: signal SIGABRT 错误,我查看了描述,它给了我这个:

无法将“SKLabelNode”类型的值 (0x108ed0b78) 转换为“Koala_Hop.MCTPointLabel”(0x108091da0)。(lldb)

对于这行代码:

func loadHighscore() {
let defaults = NSUserDefaults.standardUserDefaults()
let highscoreLabel = childNodeWithName("highscoreLabel") as! MCTPointLabel //line with error
highscoreLabel.setTo(defaults.integerForKey("highscore"))

真的很困惑,需要帮助解决这个问题!提前致谢!

    **EDIT**: The declaration of highscoreLabel:
func addPoints() {
let pointsLabel = MCTPointLabel(num: 0)
pointsLabel.fontColor = UIColor.brownColor()
pointsLabel.position = CGPointMake(30.0, view!.frame.size.height - 40)
pointsLabel.name = "pointsLabel"
addChild(pointsLabel)


let highScoreLabels = MCTPointLabel(num: 0)
highScoreLabels.position = CGPointMake(view!.frame.size.width - 40, view!.frame.size.height - 40)
addChild(highScoreLabels)

let highscoreLabel = SKLabelNode(text: "High Score")
highscoreLabel.fontColor = UIColor.brownColor()
highscoreLabel.fontSize = 16.0
highscoreLabel.fontName = "Chalkduster"
highscoreLabel.name = "highscoreLabel"
highscoreLabel.position = CGPointMake(620, 310)
addChild(highscoreLabel)

}

最佳答案

在 GameScene 中更改高分标签的声明:

let highscoreLabel = MCTPointsLabel(text: "High Score")

假设 MCTPointsLabel 继承自 SKLabelNode 一切都会正常工作。你必须确保,如果你强制类型转换一个类,你确实拥有该类的一个对象。当你说这句话时:

let highscoreLabel = childNodeWithName("highscoreLabel") as! MCTPointLabel

您将标签类型转换为 MCTPointLabel,但由于您的 highscoreLabel 之前实际上被声明为 SKLabelNode,因此您无法类型转换并收到错误。

希望这对您有帮助,如果您需要澄清,请告诉我。
编辑:试试这个:

var highscoreLabel = MCTPointsLabel(num: 0)
highscoreLabel.text = "High Score"

关于Swift SpriteKit : Thread 1: signal SIGABRT. 无法转换 SKLabelNode 类型的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32407802/

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