Mik*_*B24 3 operator-keyword swift4
晚上好可爱的社区,
这是我的第一篇文章,请怜悯,如果我做错了什么.
我知道这里有一些类似的问题,但我不明白.
也许我理解,如果有人在我的代码上解释它.
//这些是我的两个TextFields和"finish"-Button.
@IBOutlet weak var goalPlayerOne: UITextField!
@IBOutlet weak var goalPlayerTwo: UITextField!
@IBOutlet weak var finishedGameButton: UIButton!
Run Code Online (Sandbox Code Playgroud)
//这是我的功能,它应该告诉我,哪个玩家赢了像A <B,所以B赢了.
@IBAction func finishedGameButtonPressed(_ sender: Any) {
// define UITextField as Integer
let goalPlayerOne = "";
let goalOne = Int(goalPlayerOne);
let goalPlayerTwo = "";
let goalTwo = Int(goalPlayerTwo);
Run Code Online (Sandbox Code Playgroud)
//这里是问题:
"二元运算符'<'不能应用于两个'Int?' 操作数"
//如果我做'=='它有效
if goalOne < goalTwo{
displayMyAlertMessage(userMessage: "Player Two wins")
return
}
Run Code Online (Sandbox Code Playgroud)
Cha*_*tka 18
如果你查看Int带有a的初始化程序的声明String,你可以在?之后init看到它返回一个可选的:
convenience init?(_ description: String)
Run Code Online (Sandbox Code Playgroud)
这意味着你必须在用它做大部分事情之前解开它(这==是一个例外,因为该Optional类型对该运算符有重载).
打开您的选项有四种主要方式:
if let goalOne = Int(someString) {
// do something with goalOne
}
Run Code Online (Sandbox Code Playgroud)
guard let goalOne = Int(someString) else {
// either return or throw an error
}
// do something with goalOne
Run Code Online (Sandbox Code Playgroud)
map和/或flatMaplet someValue = Int(someString).map { goalOne in
// do something with goalOne and return a value
}
Run Code Online (Sandbox Code Playgroud)
let goalOne = Int(someString) ?? 0 // Or whatever the default value should be
Run Code Online (Sandbox Code Playgroud)
如果您打开所有选项,您将能够按预期进行比较.
| 归档时间: |
|
| 查看次数: |
10599 次 |
| 最近记录: |