Swift 枚举作为函数中的参数
Swift enum as parameter in function
我有一个 class,它存储一个枚举,并提供一个函数,如果将枚举作为参数给出,则将此枚举显示为字符串。
enum ErrorType: String {
case InvalidInputTextFieldEmpty = "One or more inputs seem empty. Please enter your credentials."
case InvalidInputPasswordsNotMatch = "Please check your passwords they doesn't seem to match."
}
class ErrorManager: NSObject {
func handleError(errorType: ErrorType)
{
self.showAlertView(errorType.rawValue)
}
func showAlertView(message:String)
{
var alertView:UIAlertView = UIAlertView(title: "Notice", message: message, delegate: self, cancelButtonTitle: "OK")
alertView.show()
}
}
现在我想访问另一个 class 中的 handleError 函数:
ErrorManager.handleError(ErrorType.InvalidInputTextFieldEmpty)
但是编译抱怨参数是 n0t if kind ErrorManager 尽管我写的参数是 ErrorType 类型。我在这里做错了什么?
当您将方法声明为实例方法时,您正试图将其作为 class 方法访问。您要么需要创建 ErrorManager class 的实例并将其用作方法调用中的接收者,要么将您的方法声明更改为 class 方法,如下所示:
class ErrorManager: NSObject {
class func handleError(errorType: ErrorType) {
ErrorManager.showAlertView(errorType.rawValue)
}
class func showAlertView(message: String) {
let alertView = UIAlertView(title: "Notice", message: message, delegate: self, cancelButtonTitle: "OK")
alertView.show()
}
}
我有一个 class,它存储一个枚举,并提供一个函数,如果将枚举作为参数给出,则将此枚举显示为字符串。
enum ErrorType: String {
case InvalidInputTextFieldEmpty = "One or more inputs seem empty. Please enter your credentials."
case InvalidInputPasswordsNotMatch = "Please check your passwords they doesn't seem to match."
}
class ErrorManager: NSObject {
func handleError(errorType: ErrorType)
{
self.showAlertView(errorType.rawValue)
}
func showAlertView(message:String)
{
var alertView:UIAlertView = UIAlertView(title: "Notice", message: message, delegate: self, cancelButtonTitle: "OK")
alertView.show()
}
}
现在我想访问另一个 class 中的 handleError 函数:
ErrorManager.handleError(ErrorType.InvalidInputTextFieldEmpty)
但是编译抱怨参数是 n0t if kind ErrorManager 尽管我写的参数是 ErrorType 类型。我在这里做错了什么?
当您将方法声明为实例方法时,您正试图将其作为 class 方法访问。您要么需要创建 ErrorManager class 的实例并将其用作方法调用中的接收者,要么将您的方法声明更改为 class 方法,如下所示:
class ErrorManager: NSObject {
class func handleError(errorType: ErrorType) {
ErrorManager.showAlertView(errorType.rawValue)
}
class func showAlertView(message: String) {
let alertView = UIAlertView(title: "Notice", message: message, delegate: self, cancelButtonTitle: "OK")
alertView.show()
}
}