【问题标题】:Swift 2 Error: Argument labels '(value:)' do not match any available overloadsSwift 2 错误:参数标签 '(value:)' 不匹配任何可用的重载
【发布时间】:2017-05-16 19:54:14
【问题描述】:

我正在尝试随机化适合我的节奏游戏的圆圈,但我似乎无法让它发挥作用。这是我得到的最接近的:

var alternator = 0
var fallTimer:NSTimer?
var flag:Bool = true

let circleIndexes = (0..<5).map { return NSNumber(value: $0) }

let randomIndexes = GKRandomSource.sharedRandom().arrayByShufflingObjectsInArray(circleIndexes) as! [Int]

func fallCircleWrapper() {

    if (flag == true) {
        self.alternator += 1
    } else {
        self.alternator -= 1
    }

    if (self.alternator == 0) {
        flag = true
    } else if (self.alternator == 5) {
        flag = false
    }

    self.hitAreaArray[randomIndexes[self.alternator]].emitNote(self.texture!)
}

错误出现在这一行:

let circleIndexes = (0..<5).map { return NSNumber(value: $0) }

我是新手,如果有一个我没有看到的简单解决方案,请原谅我,如果你有一个更好的解决方案,请随时提出更好的解决方案。谢谢。

【问题讨论】:

  • 你为什么使用 Swift 2?最新的稳定版 Xcode 甚至不支持 Swift 2.x - 你真的应该更新到 Swift 3。

标签: swift swift2 nsnumber


【解决方案1】:

这是 Swift 3 代码。 Swift 2 NSNumber 的初始化器是:

NSNumber(integer: ...)

所以,你的行会变成:

let circleIndexes = (0..<5).map { return NSNumber(integer: $0) }

【讨论】:

  • 谢谢,这行得通。但是,我有一个新问题。这一行:let randomIndexes = GKRandomSource.sharedRandom().arrayByShufflingObjectsInArray(circleIndexes) as! [Int] 给出错误“实例成员 'circleIndexes' 不能用于类型 'GameScene'。我该怎么办?
  • @shadokyr,请避免在 cmets 中提出多个问题。如果您有其他问题,请打开另一个问题,以便将来与您有相同问题的其他人能够找到答案。
【解决方案2】:

这是 Swift 3 代码。

NSNumber(value:)

Swift 2 版本:

NSNumber(integer:)

你只需要改成这个

let circleIndexes = (0..<5).map { return NSNumber(integer: $0) }

【讨论】:

    猜你喜欢
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多