基於堆棧跟蹤,它看起來像它試圖把description
作爲ObjC屬性,而不是一個斯威夫特屬性。根據source code,這不應該發生。這可能是最新的Swift編譯器中的一個bug,它正在生成Swift庫,因爲它也在iOS 9設備上崩潰。
請務必提交bug with Swift,因爲這似乎是一種語言錯誤。我已經驗證它在最新的Swift 4工具鏈中仍然存在問題。與此同時,您可以通過簡單地複製像我在此處展示的預期實現,使用自己的擴展名獲得description
的相同行爲。
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))"
}
}
您沒有使用VAR或讓一個錯誤。 –
@LeoDabus這是有效的代碼,不應該導致運行時崩潰。 –
Xcode 9的哪個版本正在運行?你正在運行的系統的區域設置是什麼? –