【发布时间】:2017-01-08 06:25:02
【问题描述】:
我正在尝试实现一些函数以使用 swift as 中的 try catch 从某个函数中获取整数
//Enum
enum LengthError: ErrorType {
case NoInt
case Default
}
// get Max length From Key else throws error
func getMaximumLength() throws -> Int? {
guard let length = Int(getStringForKey("KEY")) else {
throw LengthError.NoInt
}
return length
}
// This function
func getMaxLength() -> Int {
var maxLength: Int?
do {
maxLength = try getMaximumLength()
} catch LengthError.NoInt {
maxLength = 20
} catch LengthError.Default {
maxLength = 20
} catch {
maxLength = 20
}
return maxLength
}
但编译器在 getMaximumLength() 函数处显示错误为“抛出的表达式类型 'String' 不确认为 'ErrorType'”。
如何解决这个问题?
【问题讨论】:
-
@Hamish 我到底在哪里缺少右括号?而且你目前不担心可选的 return ,以后可以轻松解决。无论如何,谢谢
-
哦,这在我的实际代码中不是问题,在将其粘贴到堆栈中时可能会丢失。
-
你能发一个minimal reproducible example吗?当前代码给出的唯一错误(在 Swift 2.3 中编译时)是您试图在一个函数中返回一个可选项,该函数需要一个非可选返回(
getMaxLength()中的return maxLength)和函数getStringForKey(_:)未定义。