2016-03-24 7 views
0

Iは以下のように定義された列挙を有する:スイフト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に変換することを考えましたが、あまり好きではありません。より良い解決策はありますか?

答えて

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]) 
} 
+0

ような何かを試すことができ

、私はNSArrayのが唯一のポインタを含んでいなければならないとは思いませんでした右です。解像度については、関数の外側で変換を行う代わりに、関数の外側でforループを移動した後、関数内で再び繰り返します – whtman