如何将enum作为参数传递给协议中的可选方法

WKL*_*WKL 4 objective-c ios swift

enum SearchBarAction {
  case Cancel
  case Bookmark
  case Location
  case Category
  case Filter
}

@objc protocol SearchBarNavigatorDelegate: class {
  optional func searchBarNavigator(clicked: SearchBarAction)
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误

Method cannot be a member of an @objc protocol because the type of the parameter cannot be represented in Objective-C
Run Code Online (Sandbox Code Playgroud)

我需要这个方法是可选的,因此我不能删除@objc来解决这个问题.

在将枚举作为参数传递给方法时,有没有办法使用可选的协议方法?

Rob*_*Rob 12

如果您将枚举声明为@objc原始类型,它将起作用:

@objc enum SearchBarAction: Int {
    case cancel
    case bookmark
    case location
    case category
    case filter
}
Run Code Online (Sandbox Code Playgroud)