Swift 2:@objc协议和枚举数组

时间:2016-03-24 09:22:16

标签: ios swift enums swift2 protocols

我的枚举定义如下:

@objc enum MyEnum: Int {
   case Case1, Case2
}

以及以下协议:

@objc protocol MyProtocol {
   func myFunc(myData: [MyEnum])
}

现在协议抛出以下错误:

 Method cannot be a member of a @objc protocol because the type of the parameter cannot be represented in Objective-C

我不明白为什么会这样。为什么会这样:

func MyFunc(myData: MyEnum)

但是会引发数组错误吗?

我想过传递一个Int数组,然后将它转换回enum但我不太喜欢它。有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我不确定,但它不应该工作,因为Objective-C数组应该只包含指针,而Int的枚举不包含指针。

您可以尝试这样的事情

@objc enum MyEnum: Int {
    case Case1, Case2

    var numberValue : NSNumber {

        get {

            return NSNumber(
                integer: self.rawValue
            )
        }
    }
}

@objc protocol MyProtocol {
    func myFunc(myData: [NSNumber])
}