计时器倒计时使用字典检索键值 // "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.
我正在尝试设置一个煮蛋计时器,并在按下按钮时显示倒计时。如果按下 "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.