计时器倒计时使用字典检索键值 // "cannot convert value of type String to expected argument type String"

Timer Countdown using dictionary to retrieve key value // "cannot convert value of type String to expected argument type String"

我正在尝试设置一个煮蛋计时器,并在按下按钮时显示倒计时。如果按下 "Soft",倒计时从 300 秒开始,依此类推。

但是,此消息不断出现 "cannot convert value of type String to expected argument type String"。我该怎么办?

这是代码:

import UIKit

class ViewController: UIViewController {

    let eggTimer = ["Soft" : 300, "Medium" : 420, " Hard" : 720]
    var secondsRemaining = 60

    @IBAction func hardnessPressed(_ sender: UIButton) {

        let hardness = [sender.currentTitle!]

        secondsRemaining = eggTimer[hardness]!
        Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)
    }

    @objc func updateTimer() {
        if secondsRemaining > 0 {
            print(" \(secondsRemaining) second")
            secondsRemaining -= 1
        }
    }
}

行:

let hardness = [sender.currentTitle!]

是错误的,您混淆了 Objective-C 方法调用语法 [object method...] 和 属性 语法 object.property.

Swift 看到的是表达式 sender.currentTitle!,它访问数组文字 [ ... ] 中的 Objective-C 属性,因此创建了一个 1 个元素的数组hardness 的类型为 [String]String 的数组,而不是您预期的 String

删除 []。 HTH

错误截图1 -

修复截图 2

只需添加 @objc 行号 21.