【问题标题】:On upgrade to swift3, getting an error 'cannot override a property with type GKEntity'升级到 swift3 时,出现错误“无法覆盖 GKEntity 类型的属性”
【发布时间】:2016-09-14 06:14:05
【问题描述】:

更新到 swift3 后,注释行返回错误: 类型为“GKEntity!”的属性“实体” (又名“ImplicitlyUnwrappedOptional”)无法覆盖类型为“GKEntity?”的属性

import SpriteKit
import GameplayKit
class EntityNode: SKNode {  
    weak var entity: GKEntity!    // error here
}

升级前它运行良好。知道出了什么问题以及如何解决这个问题吗?

【问题讨论】:

    标签: swift entity gameplay-kit


    【解决方案1】:

    SKNode 已经有一个名为entity 的属性,其定义如下:

    var entity: GKEntity?
    

    因此,您不能用 entity 类型的 GKEntity! 覆盖它

    因此,您可以将entity 重命名为其他名称,也可以使用已经存在的entity

    你可以阅读更多关于SKNodehere的信息

    希望对你有帮助:)

    【讨论】:

    • 谢谢。此属性是 iOS 10 以来的新属性。查看 Apple 使用的语法“developer.apple.com/reference/spritekit/sknode/1640688-entity”后,它几乎相同。我认为像这样将 GKEntities 与 SKNodes 链接的想​​法最初是在 DemoBots 中发现的,但我不确定。现在的问题是我是否可以关闭我的声明并依赖 Apple 的新声明,或者我是否仍需要在其他地方进行一些语法更改。您是否看到过有关新属性的任何示例?
    • 啊..这解释了为什么升级后一切都停止了。我还没有看到任何与新属性有关的示例,不,抱歉。如果您对“您的”entity 的意图与 Apple 的意图大致相同,那么我会说您现在应该使用 Apple 提供的意图。它似乎是同一类型,唯一的区别是“Apple”entity 是可选的,而您的不是。不知道这是否对你有帮助:)
    • 我去看看!在我可以试用 Apple 的财产之前,我还需要修复 swift3 升级的一些障碍。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多