auf dem Stack-Trace Basierend, es sieht aus wie es versucht, description
als ObjC Eigenschaft zu behandeln anstatt eine Swift-Eigenschaft. Basierend auf der source code sollte dies nicht passieren. Es ist wahrscheinlich ein Fehler im neuesten Swift-Compiler, der die Swift-Bibliotheken erzeugt, weil er auch auf einem iOS 9-Gerät abstürzt.
Achten Sie darauf, eine bug with Swift Datei, da dies ein Sprachfehler zu sein scheint. Ich habe festgestellt, dass es in der neuesten Swift 4 Toolchain noch immer kaputt ist. In der Zwischenzeit können Sie das gleiche Verhalten von description
mit Ihrer eigenen Erweiterung erhalten, indem Sie einfach die beabsichtigte Implementierung duplizieren, wie ich sie hier gezeigt habe.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// let brokenDescription = NSLocale.current.description
// let otherBrokenDescription = Locale.current.description
let objcDescription = (Locale.current as NSLocale).debugDescription //"<__NSCFLocale: 0x1c00dbc10> \'en_US\'}"
let myDescription = Locale.current.myDescription // "en_US (current)"
}
}
extension Locale {
private var _kindDescription : String {
if self == Locale.autoupdatingCurrent {
return "autoupdatingCurrent"
} else if self == Locale.current {
return "current"
} else {
return "fixed"
}
}
public var myDescription: String {
return "\(identifier) (\(_kindDescription))"
}
public var myDebugDescription : String {
return "\(identifier) (\(_kindDescription))"
}
}
Sie verwenden var nicht oder lassen. –
@LeoDabus Das ist ein gültiger Code und sollte keinen Laufzeit-Crash verursachen. –
Welchen Build von Xcode 9 laufen Sie? Und was ist das Gebietsschema des Systems, auf dem Sie dies ausführen? –