Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取类型为'的转换值;字符串';至';日历标识符';将Swift 2转换为Swift 3后出错_Swift - Fatal编程技术网

获取类型为'的转换值;字符串';至';日历标识符';将Swift 2转换为Swift 3后出错

获取类型为'的转换值;字符串';至';日历标识符';将Swift 2转换为Swift 3后出错,swift,Swift,将(我以前的工作)代码转换为SWIFT 3后,我在尝试编译和运行时收到一条错误消息: 无法将“String”类型的值转换为预期的参数类型 '日历.标识符' 粘贴发生问题的部分: var calendar = Calendar(identifier: NSGregorianCalendar) var birthday = calendar?.date(from: dateComponent) var currentDate = Date() Adn整个应用程序/代码: i

将(我以前的工作)代码转换为
SWIFT 3
后,我在尝试编译和运行时收到一条错误消息:

无法将“String”类型的值转换为预期的参数类型 '日历.标识符'

粘贴发生问题的部分:

    var calendar = Calendar(identifier: NSGregorianCalendar)
    var birthday = calendar?.date(from: dateComponent)
    var currentDate = Date()
Adn整个应用程序/代码:

import UIKit

class ViewController: UIViewController, UITextFieldDelegate { //, UIPickerViewDataSource, UIPickerViewDelegate {


@IBOutlet weak var dayTextField: UITextField!
@IBOutlet weak var monthTextField: UITextField!
@IBOutlet weak var yearTextField: UITextField!

@IBOutlet weak var messageLabel: UILabel!

/*UI Picker data

var data = */

func textFieldDidBeginEditing(textField: UITextField) {
    let datePicker = UIDatePicker()
    textField.inputView = datePicker
} */


override func viewDidLoad() {
    super.viewDidLoad()
    dayTextField.delegate = self //dopisujemy delegate i u góry uitextfielddelegate
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.dismissKeyboard))
    view.addGestureRecognizer(tap)
}




//Calls this function when the tap is recognized.
func dismissKeyboard() {
    //Causes the view (or one of its embedded text fields) to resign the first responder status.
    view.endEditing(true)


}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

    // Dispose of any resources that can be recreated.
}



@IBAction func buttonPressed(_ sender: UIButton) {
    messageLabel.text = "Udało się!"

    var dateComponent = DateComponents()
    dateComponent.day =  Int(dayTextField.text!)! //1
    dateComponent.month = Int(monthTextField.text!)! //1
    dateComponent.year = Int(yearTextField.text!)! //2000


    //TextField - zamykanie klawiatury po nacisnieciu na ekran poza klawą






    var calendar = Calendar(identifier: NSGregorianCalendar)
    var birthday = calendar?.date(from: dateComponent)
    var currentDate = Date()






    //obie następne rzeczy printowane sa w konsoli XCode po naciśnieciu przycisku w aplikcaji
    print(birthday)
    print("Current Date is \(currentDate)")



    //sumowanie
    var datesDuration = (calendar as NSCalendar?)?.components(NSCalendar.Unit.day,
                                             from: birthday!,
                                             to: currentDate, options: [])



    //poniżej ! oznacza, iż nie jest to optional tylko na pewno var. Gdyby zostało ?, przy wyniku pojawił by nam się w aplikacji "otpional".

    var daysTogether = datesDuration!.day


    /*dodamy bajery aby było bardziej ładnie

    var numberFormatter = NSNumberFormatter()
    numberFormatter.usesGroupingSeparator = true

    var dayString = numberFormatter.stringFromNumber(daysTogether) */


    //wynik koncowy
    messageLabel.text = "Dni w związku: \(daysTogether) !! "



}

/*UIPicker nieskonczony

@available(iOS 2.0, *)
public func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {


}


@available(iOS 2.0, *)
public func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

} */


}

更改为以下内容:

var calendar=日历(标识符:。公历)

需要一个类型为
NSCalendar.Identifier的参数

在Swift 3中,您想使用的(在您的案例中)是
Calendar.Identifier.gregorian
。即

var calendar = Calendar(identifier: Calendar.Identifier.gregorian)
或者,简单地说

var calendar = Calendar(identifier: .gregorian)

写这个:-
var calendar=calendar(标识符:.gregorian)
&研究一下这个谢谢你,解决了我的问题。现在代码已编译并成功启动(agaian!)@斯波迪先生很乐意帮忙!我可以设置全局。我的应用程序很旧,我有一个大项目。。我已经使用了很多地方的日历。我可以设置全局。我的应用程序很旧,我有一个大项目。。我已经使用了很多地方的日历。我建议创建一个单例,这样你就可以从任何类访问一个日历对象。你说得对,它正在工作,但我的项目已经有5年历史,我的项目中使用了100个地方的日历。。我必须为此设置默认的gregorian.any sort cut方法..方法重写或其他一些东西。我建议创建一个单例,这样您就可以从任何类访问一个日历对象,然后用单例替换所有日历引用
var calendar = Calendar(identifier: .gregorian)