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

时间:2016-05-06 15:40:20

标签: ios objective-c swift

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

@objc protocol SearchBarNavigatorDelegate: class {
  optional func searchBarNavigator(clicked: SearchBarAction)
}

这给了我一个错误

Method cannot be a member of an @objc protocol because the type of the parameter cannot be represented in Objective-C

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

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

1 个答案:

答案 0 :(得分:10)

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

@objc enum SearchBarAction: Int {
    case cancel
    case bookmark
    case location
    case category
    case filter
}