ios – ‘CountableClosedRange’类型的表达式模式不能匹配’Int
发布时间:2020-12-14 18:10:07 所属栏目:百科 来源:网络整理
导读:在 Swift 3之前的某个时刻,这段代码可以在没有任何编译错误的情况下工作,但是在转换为Swift 3之后,这段代码没有编译,我也不完全理解值类型是如何不同的. 给出的错误是’CountableClosedRange Int‘类型的表达模式对于我在switch语句中尝试使用不同值范围的交
在
Swift 3之前的某个时刻,这段代码可以在没有任何编译错误的情况下工作,但是在转换为Swift 3之后,这段代码没有编译,我也不完全理解值类型是如何不同的.
给出的错误是’CountableClosedRange< Int>‘类型的表达模式对于我在switch语句中尝试使用不同值范围的交换机情况,无法匹配“Int”类型的值: switch hour { case 0 ... 11: greetingStatement.text = "Good Morning" case 12 ... 24: greetingStatement.text = "Good Evening" default: greetingStatement.text = "Hello" } 这是完整的代码: import UIKit class ViewController: UIViewController { @IBOutlet weak var userInput: UITextField! @IBOutlet weak var usertOutput: UILabel! @IBOutlet weak var tapMeAfterEnteringYourName: UIButton! @IBOutlet weak var greetingStatement: UILabel! @IBOutlet weak var letsGetStartedLabel: UILabel! @IBOutlet weak var ballonsImageView: UIImageView! @IBOutlet weak var teacherPointingToBoardImage: UIImageView! @IBAction func setOutput(_ sender: AnyObject){ greetingStatement.isHidden = false usertOutput.text=userInput.text tapMeAfterEnteringYourName.isHidden = true userInput.isHidden = true letsGetStartedLabel.isHidden = false ballonsImageView.isHidden = false let date = Date() let calendar = Calendar.current let components = (calendar as NSCalendar).components([.hour],from: date) let hour = components.hour switch hour { case 0 ... 11: greetingStatement.text = "Good Morning" case 12 ... 24: greetingStatement.text = "Good Evening" default: greetingStatement.text = "Hello" } view.backgroundColor = UIColor.magenta teacherPointingToBoardImage.isHidden=true var timer = Timer.scheduledTimer(timeInterval: 1.4,target: self,selector: #selector(ViewController.updateViewController),userInfo: nil,repeats: false) let hover = CABasicAnimation(keyPath: "position") hover.isAdditive = true hover.fromValue = NSValue(cgPoint: CGPoint.zero) hover.toValue = NSValue(cgPoint: CGPoint(x: 0.0,y: -100.0)) hover.autoreverses = true hover.duration = 5 hover.repeatCount = Float.infinity ballonsImageView.layer.add(hover,forKey: "myHoverAnimation") } func updateViewController() { print("Timer just fired") let storyBoard : UIStoryboard = UIStoryboard(name: "Main",bundle:nil) let resultViewController = storyBoard.instantiateViewController(withIdentifier: "MadLibOneViewController") as! MadLibOneViewController self.present(resultViewController,animated:true,completion:nil) } override func viewDidLoad() { super.viewDidLoad() view.backgroundColor=UIColor.purple usertOutput.textColor=UIColor.white userInput.textColor = UIColor.purple greetingStatement.isHidden = true letsGetStartedLabel.isHidden = true ballonsImageView.isHidden = true } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } 有人可以澄清这只是一个通用的任何类型的Int是允许的还是预期的? 解决方法
该错误具有误导性.问题是小时是可选的Int.
我会将代码更改为: if let hour = components.hour { switch hour { case 0 ... 11: greetingStatement.text = "Good Morning" case 12 ... 24: greetingStatement.text = "Good Evening" default: greetingStatement.text = "Hello" } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |