Ich habe die folgenden NSDate
Extension Initialisierer, um ein NSDate
Objekt aus einer gegebenen Zeichenfolge zu erstellen.Failable Initialisierer für Bequemlichkeit init fehlschlägt
extension NSDate {
convenience init(string: String) {
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let date = dateStringFormatter.dateFromString(string)
self.init(timeInterval:0, sinceDate:date!)
}
}
Aber der Aufruf self.init
Methode Kraft auspackt die date
Variable, die nicht sicher ist. Also versuche ich dies zu einem fehlgeleiteten Initialisierer zu machen.
extension NSDate {
convenience init?(string: String) {
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
guard let date = dateStringFormatter.dateFromString(string) else {
return nil
}
self.init(timeInterval:0, sinceDate:date)
}
}
Aber es stürzt mit einem EXC_BAD_ACCESS Fehler bei der nil
Rückkehr Linie. Ich kann nicht herausfinden warum.
Was mache ich hier etwas falsch?
Ich weiß, das ist verrückt, aber fügen Sie einen sinnlosen 'self.init' Aufruf innerhalb der Wache (egal was, solange es gelingt). Ich habe Compiler-Fehler gehabt, weil ich mich selbst nicht vollständig eingeweiht habe, selbst wenn ich null zurückgebe. –
@LouFranco Whoa, das hat funktioniert! Ist das ein Swift Bug oder sollen wir das machen? – Isuru
Ich kann das Problem im iOS Simulator nicht reproduzieren, Ihr Code funktioniert gut für mich. –