2017-11-26 15 views
1

このエラーの意味を理解できません。私のアプリは、私がSwift 4に移行するまで正常に動作していました。今、私は、このビューコントローラのいくつかを開こうとするときにこれをtableView:numberOfRowsInSectionエラーにしています。私はSwift 3.2でこれらのエラーのどれも得ていませんでした。 numberOfRowsInSectionメソッドはすべての場合に実装されており、正常に表示されます。誰かが私を正しい方向に向けることができますか?インスタンスに送信された認識できないセレクタ - スウィフト4のみ

2017年11月26日10:21:04.973523から0600 Y2GOsp [27701:6382461] - [Y2GOsp.ClientDetailViewControllerのtableView:numberOfRowsInSection:]:認識されていないセレクタは、例えば2017年11月26日0x7fa51c89f000 10に送られます。 21:43.328635から0600 Y2GOsp [27701:6382461] ***による キャッチされない例外 'NSInvalidArgumentException' にアプリの終了は、理由: ' - [Y2GOsp.ClientDetailViewController のtableView:numberOfRowsInSection:]:認識されないセレクターは インスタンス0x7fa51c89f000に送ら'

num berOfRowsInSection実装:

例1:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 1 
} 

例2:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return dayAppoints.count 
} 
+0

'numberOfRowsInSection'実装を質問に追加してください。 – vacawama

+0

あなたは 'tableview:...'の代わりに 'tableview:...'を書いたことを知っていますか? – vikingosegundo

+0

ちょうどタイプミス。私はそれを更新しました。 @vacawama、私は失敗している2つのviewControllerの実装例を追加しました。 – Lastmboy

答えて

5

@Hamishは彼のコメントに問題を特定しました。 class宣言にUITableViewDataSourceを追加するのを忘れました。そのため、データソースメソッドはObjective-Cに公開されませんでした。

@objcを追加すると、問題が確認されました。

スウィフト3で働いた理由は、NSObjectUIViewController)から派生したクラスのすべてのメソッドがObjective-Cで利用可能であったためです。

Swift 4 (due to SE-0160)では、基底クラスにマークされている関数をオーバーライドしない限り、または関数が要件を満たしている場合を除いて、セレクタを介して呼び出される@objcという関数を明示的にタグ付けする必要がありますプロトコル定義の@objc