@IBInspectable在Swift 4.0中

时间:2017-10-06 07:39:51

标签: ios delegates datasource swift4 ibinspectable

迁移到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中出了什么问题。

此外,编译器没有显示任何建议。它只显示一条错误消息。

1 个答案:

答案 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
}


这是参考。错误解决的快照:

enter image description here

以下是@objc表示法的Apple文档 - Protocol - Optional Protocol Requirements