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

标签 swift sprite-kit sigabrt

所以我正在完成一个项目,当我运行它时,它崩溃了,我收到了 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/

相关文章:

swift - 如何识别委托(delegate)对象

ios - Apple Pay 适用于模拟器,但不适用于设备

swift - 你能用另一个 SKSpriteNode 屏蔽一个 SKSpriteNode 吗?

ios - Sprite Kit 中暂停游戏 : Why doesn't this work?

swift - 使用 Mapkit 进行位置授权时不断抛出此错误 : (0x14) "Unable to insert COPY_SEND"

ios - 如何让这个 segue 动画退出到右侧或左侧? - swift

ios - 如何为倒数计时器创建循环进度指示器

ios - 使用UITable显示数据但显示错误

c - C语言编程中的Sigabrt错误

runtime - "Sigabrt Error"-Codechef