1

在迁移到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

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

4

1 回答 1

1

在 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
}


这是参考。具有错误解决方案的快照:

在此处输入图像描述

这是用于表示法的 Apple 文档@objc-协议 - 可选协议要求

于 2017-10-10T10:08:30.610 回答