迁移到Swift 4.0
时,我遇到了@IBInspectable
,
open class SVContactBubbleView: UIView
{
@IBInspectable open var dataSource: SVContactBubbleDataSource? //ERROR..!!
@IBInspectable open var delegate: SVContactBubbleDelegate? //ERROR..!!
}
public protocol SVContactBubbleDataSource
{
//Methods here
}
public protocol SVContactBubbleDelegate
{
//Methods here
}
出现的错误是:
属性不能标记为@IBInspectable,因为它的类型不能 在Objective-C中表示
在Swift 3
,它运作良好。我不明白Swift 4
中出了什么问题。
此外,编译器没有显示任何建议。它只显示一条错误消息。
答案 0 :(得分:0)
在Swift 4中为委托和数据源添加符号@objc(如下面的代码所示)
open class SVContactBubbleView: UIView {
@IBInspectable open var dataSource: SVContactBubbleDataSource?
@IBInspectable open var delegate: SVContactBubbleDelegate?
}
@objc // add notation here
public protocol SVContactBubbleDataSource
{
//Methods here
}
@objc // add notation here
public protocol SVContactBubbleDelegate
{
//Methods here
}
这是参考。错误解决的快照:
以下是@objc
表示法的Apple文档 - Protocol - Optional Protocol Requirements