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



我有一个枚举定义如下:

@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,但我不太喜欢它。有更好的解决方案吗?

我不确定,但它不应该工作,因为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])
}

最新更新