2016-10-15 2 views
1

Nach dem Konvertieren (mein zuvor arbeiten) Code zu SWIFT 3 bekomme ich eine Fehlermeldung beim Versuch zu kompilieren und auszuführen:Der Konvertierungswert des Typs 'String' wird in 'Calendar.Identifier' Fehler nach dem Konvertieren von Swift 2 in Swift 3

Wert vom Typ 'String' zu erwarteten Argumenttyp den Abschnitt

Einfügen das Problem auftritt kann nicht 'Calendar.Identifier' konvertieren:

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

Adn die ganze App/Code:

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

: Schreibe: - 'var Kalender = Kalender (Kennung: .gregorian)' & Study diesem [link] (https://developer.apple.com/reference/foundation/nscalendar/1412400-init) – pkc456

Antwort

2

Die init(identifier:) failable initialize of Calendar erwartet ein einziges Argument vom Typ NSCalendar.Identifier:

In Swift 3, die calendar identifier, die Sie nutzen (in Ihrem Fall) machen wollen, ist Calendar.Identifier.gregorian. I.e.

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

oder einfach

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

Danke, das hat mein Problem gelöst. Jetzt kompiliert und startet der Code erfolgreich agaian! :) –

+0

@ M.Spoldi gerne helfen! – dfri

Verwandte Themen