2016-04-20 2 views
0

テーブルビューセルをタップすると、別のビューに移動します。一度他のビューに到着すると、データを非同期にロードするWebサービスが呼び出されます。オプションの関数ポインタとしてのクラスパラメータは、関数として認識されません。

私は自分のセルクラスをネットワークコードから守りたいので、私はTableViewControllerで自分のWebサービス呼び出しを定義し、prepareForSegue()で私のTableViewCellの種類の代理プロパティを設定します。

///TableViewController 
override func prepareForSegue(...) { 
dest = TableViewCell 

dest.getDataDelegate = getData 
} 

func getData(...) -> X? { 
... 
} 

///TableViewCell 
var getProductDelegate: ((...) -> X?)! 
override func viewWillAppear() { 
... 
getProductDelegate(...) //Error - Cannot call value of non function type  
} 

私はのgetDataの型宣言の周りに括弧の乗り心地を取得した場合、それは関数としてそれを認識したが、その後クラスが初期化を必要とします。私はストーリーボードを使用していますので、避けたいです。

ありがとうございます!

編集:Yhea、愚かなエラー:私はちょうどそれが

EDIT2 optionnalだ場合は、それをアンラップしなければならないと思います。私の悪い、投稿の回答

答えて

0

[OK]をオプションとして、プロパティの型getProductDelegateはもはや関数ではありません。

シンプルアンラップいつものように、あなたは関数としてそれを使用することができます:

if let func = getProductDelegate { 
func(...) 
} 
関連する問題