2016-11-01 4 views
0

Ich habe den folgenden Code ein, die vor dem Swift 3 gearbeitet, und nachdem ich zu Swift aktualisiert 3, Es ist gerade nicht arbeitetOptionswert wird nicht zu einer Variablen zugewiesen bekommt richtig

let calendar = Calendar.current 
    let components = (calendar as NSCalendar).components([.hour, .minute], from: currentDate) 
    let hour = components.hour 
    let minutes = components.minute 
    var time = String(describing: hour) + ":" + String(describing: minutes) 
    var newTime = time.components(separatedBy: ":") 
    var ihh = Int(newTime[0]) 
    var imm = Int(newTime[1]) 

    var shh = String(ihh!) 
    var smm = String(imm!) 


Newtime Array 2 Option Werte in und ich habe das mit Debugger validiert.
Aber nachdem die Werte ihh, imm zugewiesen wurden, sehe ich, dass beide (ihh, imm) null sind.
Irgendeine Idee, wie man das repariert?
Borna

Antwort

1

var Zeit = String (! Stunde) + ":" + String (! Minuten)

'beschreiben', ergänzt "optional" Wort in der Zeichenfolge

+0

'Beschreiben 'ist nicht der Grund. – vadian

+0

@vadian ich konfrontiert das gleiche Problem beim Migrieren von Frpm swift 2 in schnelle 3.i wirklich wissen, dass "Beschreibung" Konstruktor erstellt unerwünschte Präfix und Suffix – Vyacheslav

+0

@vadian Sie haben fast die gleiche geschrieben – Vyacheslav

1

Alle aktuellen Komponenten - von Der Weg, components wurde in Swift 3 geändert, das vermeidet auch die Besetzung zu NSCalendar - sind Optionals in Swift 3 (im Gegensatz zu Nicht-Optionen in Swift 2), müssen Sie sie auspacken. Der Fehler tritt auf, weil ein Literal wie "Optional(15)" nicht in Int konvertiert werden kann.

let hour = components.hour! 
let minutes = components.minute! 
Verwandte Themen