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



我是Swift的初学者,确实遇到了这个问题。

我有一个原型细胞CurrencySwitchTableViewCell,它是UITableViewCell的子类。

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

此单元格具有currencySwitchDelegate属性,该属性应为CurrencySwitchDelegate协议

protocol CurrencySwitchDelegate {
   func didSelectCurrency(currency:Currency)
}

如何在CurrencySwitchTableViewCell中声明我的currencySwitchDelegate是对应于CurrencySwitchDelegate协议的AnyObject

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

NSObject<CurrencySwitchDelegate>id<CurrencySwitchDelegate>

p.S.

我知道我可以申报我的财产是

@IBOutlet weak internal var currencySwitchDelegate: CurrencySwitchDelegate!

但是XCode给了我@IBOutlet修饰符的错误(IBOutlets应该是AnyObject类)

对象通常对委托有弱引用,只有对象才能成为弱引用。您可以使用: 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?
}

相关内容

  • 没有找到相关文章

最新更新