【发布时间】:2015-09-18 15:34:39
【问题描述】:
我目前只是在玩 swift。我正在关注 Lynda.com 手表套件教程,该教程将引导观众创建一个简单的手表计算器。
以下方法抛出错误“一行上的连续语句必须用';'分隔”
func updateText(){
guard let labelInt:Int64 = Int64(labelString) else {
label.setText("Number is too big")
return
}
label.setText("\(labelInt)")
}
由于某种原因,xCode 无法识别警卫,因此该语句会引发错误。我看过多个使用警卫的教程,我错过了什么?该教程似乎使用完全相同的方法字符到字符没有问题。
整个文件供参考:
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
var labelString:String = "0"
@IBOutlet var label: WKInterfaceLabel!
@IBAction func tapped0(){tappedNumber(0)}
@IBAction func tapped1(){tappedNumber(1)}
@IBAction func tapped2(){tappedNumber(2)}
@IBAction func tapped3(){tappedNumber(3)}
@IBAction func tapped4(){tappedNumber(4)}
@IBAction func tapped5(){tappedNumber(5)}
@IBAction func tapped6(){tappedNumber(6)}
@IBAction func tapped7(){tappedNumber(7)}
@IBAction func tapped8(){tappedNumber(8)}
@IBAction func tapped9(){tappedNumber(9)}
func tappedNumber(num:Int){
labelString = labelString.stringByAppendingString("\(num)")
updateText()
}
func updateText(){
guard let labelInt:Int64 = Int64(labelString) else {
label.setText("Number is too big")
return
}
label.setText("\(labelInt)")
}
@IBAction func tappedPlus(){
}
@IBAction func tappedMinus(){
}
@IBAction func tappedClear(){
}
@IBAction func tappedEquals(){
}
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
// Configure interface objects here.
}
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
}
}
【问题讨论】:
-
您使用的是 Swift 1.x / Xcode 6 还是 Swift 2 / Xcode 7?
guard表达式仅在 Swift2 中可用 -
我正在使用 Xcode 6.4 并且还很新,以至于我不知道如何检查我正在使用的 swift 版本。
-
快速谷歌搜索找到了一个终端命令。这就是问题所在,我正在运行 1.2
-
Xcode 6 使用 Swift 1.2。 (没有
guard声明)。 Xcode 7 在 App Store 上可用 -
谢谢,如果您想将此作为官方答案,我会接受并将我的问题留给其他人。