【发布时间】:2020-03-16 08:00:19
【问题描述】:
我在将协议设置为可选时遇到错误。
方法不能被标记为@objc,因为参数1的类型 无法在 Objective-C 中表示
我的代码:
@objc protocol PopupDelegate : class {
@objc optional func popupItemSelected(item : PopupItem, identifier : String)
@objc optional func popupItemMultipleSelected(item : [PopupItem], identifier : String)
}
struct PopupItem : Hashable {
var name : String
var id : Int
var isSelected : Bool
init(name: String, id: Int, isSelected : Bool = false) {
self.name = name
self.id = id
self.isSelected = isSelected
}
}
我在 swift 2 中有一个 post 有同样的问题,但由于 结构中不允许继承,我无法实施此解决方案。。 p>
我尝试将@objc 标志添加到我的结构中,但出现以下错误
只有类(及其扩展)、协议、方法、初始化器、 属性,下标声明可以声明为@objc
有没有办法用结构类型实现可选委托?
【问题讨论】: