【问题标题】:Xcode 7: gamecenter 'player' is only available on iOS 8.0 or newerXcode 7:gamecenter 'player' 仅适用于 iOS 8.0 或更高版本
【发布时间】:2015-09-16 13:22:29
【问题描述】:

我正在尝试在 xcode 7 候选版本中编译我的 iOS 代码,但遇到了一个奇怪的问题。除了涉及游戏中心的错误之外,我能够修复所有错误。

我从游戏中心检索了分数,并试图解析它们,获取分数和玩家的姓名,这样我就可以构建一个自定义排行榜。 (顺便说一句,这一切都在 xCode 6 中工作)。

使用 xCode 7,我收到此错误:“播放器”仅适用于 iOS 8.0 或更高版本。

代码很简单,看起来像这样:

        myScore = theseScores[i] as! GKScore
        thisName.text = myScores.player.alias

现在,我知道这段代码可以在 iOS 7 上运行。它现在在 appstore 上,我已经在 iOS 7 上反复测试过,它运行良好。所以我不知道为什么突然说“播放器”在 iOS 7 中不可用。

我查阅了 GKScore 的文档,果然,它说“播放器”是 iOS 8 中的新功能。所以不管它以前如何工作,看起来我现在必须更改它。我是否需要进行某种运行时检查以查看我们是否在 iOS 7 上运行,并获得不同的播放器名称?

或者我可以将我的应用程序更改为需要 iOS 8 或更高版本?我无法想象还有很多人还在使用 iOS 7?

【问题讨论】:

    标签: xcode swift game-center


    【解决方案1】:

    如果上面的代码在 iOS7 中工作,那确实很奇怪,除非你在某种程度上改变了它。根据documentation,GKScore 的 player-property 严格来说是 iOS8 及更高版本...

    您确定您的应用不会在 iOS7 设备上的 thisName.text = myScores.player.alias 行崩溃吗?如果您调用部署目标的功能不可用,Xcode 6不会通常会警告您...

    至于针对 iOS8 或更高版本,Apple 刚刚更新了 App Store 支持页面上的信息,指出 87% uses iOS8...

    【讨论】:

    • 是的,我不知道为什么它以前有效,但我想它是 irellavent。为了解决这个问题,我最终这样做了: if #available(iOS 8.0, *) { thisName.text = myScore.player.alias } else { thisName.text = myScore.playerID }
    猜你喜欢
    • 1970-01-01
    • 2018-07-04
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多