Swift 正确声明对应于协议并具有超类的对象

Swift correct declaration of object corresponding to protocol and having superclass

我是 Swift 初学者,我真的被这个问题困住了。

我有一个原型单元 CurrencySwitchTableViewCell,它是 UITableViewCell 的子class。

class CurrencySwitchTableViewCell: UITableViewCell {
       @IBOutlet weak internal var currencySwitchDelegate: AnyObject!

这个单元格有一个 currencySwitchDelegate 属性 应该属于 CurrencySwitchDelegate 协议

protocol CurrencySwitchDelegate {
   func didSelectCurrency(currency:Currency)
}

如何在CurrencySwitchTableViewCell中声明我的currencySwitchDelegateAnyObject对应CurrencySwitchDelegate协议?

像这样的 Objective-C 代码的 Swift 模拟是什么?

NSObject<CurrencySwitchDelegate>id<CurrencySwitchDelegate>

P.S.

我知道我可以宣布我的 属性 为

@IBOutlet weak internal var currencySwitchDelegate: CurrencySwitchDelegate!

但是 XCode 使用 @IBOutlet 修饰符给我错误(IBOutlets 应该是 AnyObject class)

对象通常对委托有弱引用,只有对象可以成为弱引用。您可以使用 : class

通知编译器该委托是一个对象
protocol CurrencySwitchDelegate: class {
   func didSelectCurrency(currency:Currency)
}

暂时Xcode 无法使用 IBOutlet 协议。临时解决方案是创建另一个 AnyObject 类型的 IBOutlet,然后将其转换为您的代码。

@IBOutlet weak internal var outletDelegate: AnyObject?

private var delegate: CurrencySwitchDelegate? {
    return self.outletDelegate as! CurrencySwitchDelegate?
}