我正在尝试将iOS错误代码转换为Swift 2中的String(XCode 7.2)。但转换为String会返回类型名称,而不是系统枚举的值名称。
这就是我正在尝试的:
import CoreLocation
import EventKit
let clError = CLError.LocationUnknown
let clErrorString = "\(clError)"
// EXPECTED: 'LocationUnknown'. OBTAINED: 'CLError'
let ekError = EKErrorCode.CalendarIsImmutable
let ekErrorString = "\(ekError)"
// EXPECTED: 'CalendarIsImmutable'. OBTAINED: 'EKErrorCode'
但是在Swift中声明了枚举,这可以按预期工作:
enum _EKErrorCode : Int {
case CalendarIsImmutable
}
let _ekError = _EKErrorCode.CalendarIsImmutable
let _ekErrorString = "\(_ekError)"
// EXPECTED: 'CalendarIsImmutable'. OBTAINED: 'CalendarIsImmutable'
我正在尝试避免使用所有可能的枚举值的Switch-Case,或者扩展添加自定义描述的系统类型。
答案 0 :(得分:0)
这可以通过以下方式实现,而无需使用ClError.Code
扩展名手动检查情况
extension CLError.Code {
func getErrorDescription() -> String {
return String(describing: self)
}
}
用法:
let clError = CLError.locationUnknown
print (clError.getErrorDescription())