2016-10-15 2 views
1

После преобразования (мой рабочий ранее) кода в SWIFT 3 Я получаю сообщение об ошибке при попытке скомпилировать и запустить:Получение значения преобразования типа «String» в «Calendar.Identifier» после преобразования Swift 2 в Swift 3

Невозможно преобразовать значение типа 'String' ожидаемого типа аргумента 'Calendar.Identifier'

Оклейка раздел проблема возникает:

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 { 

} */ 


} 
+0

Написать это: - 'уаг календарь = календарь (идентификатор: .gregorian)' и изучить это [ссылка] (https://developer.apple.com/reference/foundation/nscalendar/1412400-init) – pkc456

ответ

2

init(identifier:) failable initialize of Calendar ожидает один аргумент типа NSCalendar.Identifier:

init?(identifier calendarIdentifierConstant: NSCalendar.Identifier) 

В Swift 3, calendar identifier, что вы хотите использовать (в вашем случае) Calendar.Identifier.gregorian. То есть

var calendar = Calendar(identifier: Calendar.Identifier.gregorian) 

или просто

var calendar = Calendar(identifier: .gregorian) 
+0

Спасибо, что решили мою проблему. Теперь код компилируется и запускается успешно agaian! :) –

+0

@ M.Spoldi рада помочь! – dfri

Смежные вопросы