我的枚举定义如下:
@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但我不太喜欢它。有更好的解决方案吗?
答案 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])
}