【问题标题】:Setting Custom Class in Xcode works for iOS 9.1 simulator but not iOS 8.4在 Xcode 中设置自定义类适用于 iOS 9.1 模拟器,但不适用于 iOS 8.4
【发布时间】:2016-02-19 00:45:03
【问题描述】:

我制作了一个游戏,我需要将触摸的 SKSpriteNode 转换为自定义类。它在 iOS 9.1 模拟器上运行良好,但在 iOS 8.4 模拟器中似乎根本无法投射。

在 iOS 9.1 中,我的类是 MyCustomClass 类型,但在 iOS 8.4 中,它是 SKSpriteNode。没有其他任何改变,只有模拟器操作系统。

我直接在SpriteKit GameScene中的Xcode中设置了自定义类(我点击节点并使用右侧选项卡在“自定义类”部分输入“MyCustomClass”)。我尝试在“Project.MyCustomClass”中添加项目名称,但这没有效果。

如果你有解决方案,我很想知道!

if self.nodeAtPoint(location).isKindOfClass(MyCustomClass) {
    print("Is my class") //This is the result in iOS 9.1
}else if self.nodeAtPoint(location).isKindOfClass(SKSpriteNode){
    print("Is an SKSPriteNode") //This is the result in iOS 8.4
}else if self.nodeAtPoint(location).isKindOfClass(SKNode) {
    print("Is an SKNode")
}

if let touchedNode = self.nodeAtPoint(location) as? Objet {
    //Fails on iOS 8.4 but succeed in iOS 9.1
}

感谢您的宝贵时间。

PS:我使用的是 Xcode 7.1.1。

【问题讨论】:

  • 如果你确定 nodeAtPoint(location) 类型是 MyCustomClass,为什么你需要强制转换它?
  • 我只知道在这个特定的测试中我明白了为什么在 iOS 8.4 上没有任何工作。
  • 您的“特定”测试取决于 iOS 版本...,或者更好地说,您的部分代码取决于 iOS 版本。您示例中的 swift 语句不是
  • 我更改了问题以反映我在您参加比赛后所做的测试。你是对的,问题不在于转换,而是当模拟器在 iOS 8.4 中运行时自定义类设置不正确。
  • if let self.nodeAtPoint(location) as? MyCustomClass 在 8.4 上失败了吗?

标签: ios xcode sprite-kit xcode7 ios8.4


【解决方案1】:

很遗憾,自定义类(或子类)根本无法在 iOS 8.4 上运行。

我不得不重写我的逻辑。

谢谢你们的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 2013-10-01
    • 2022-12-15
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多