iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – ‘CountableClosedRange’类型的表达式模式不能匹配’Int’类型的值?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在 Swift 3之前的某个时刻,这段代码可以在没有任何编译错误的情况下工作,但是在转换为Swift 3之后,这段代码没有编译,我也不完全理解值类型是如何不同的. 给出的错误是’CountableClosedRange< Int>‘类型的表达模式对于我在switch语句中尝试使用不同值范围的交换机情况,无法匹配“Int”类型的值: switch hour { case 0 ...
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"
    }
}

大佬总结

以上是大佬教程为你收集整理的ios – ‘CountableClosedRange’类型的表达式模式不能匹配’Int’类型的值?全部内容,希望文章能够帮你解决ios – ‘CountableClosedRange’类型的表达式模式不能匹配’Int’类型的值?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。