38589


Swift 2でObjective-Cのメソッドをオーバーライドしていたのですが、Swift
3にしたところ以下のエラーが出るようになりました。どのようにしたらエラーが解消されるかお知恵を貸していただけないでしょうか？

**Method does not override any method from its superclass**

以下がObjective-Cのメソッドになります。

[code]

    - (void)loadContentsInPage:(NSInteger)page handler:(void (^)(BOOL hasNext, NSError *error))handler;
    
[/code]

それをSwift 2ではこのようにオーバーライドしていて、Swift 3にしたところ上記のエラーが出ています。

[code]

    override func loadContents(inPage page: Int, handler: ((Bool, NSError?) -> Void)!) {
        // コード
    }
    
[/code]

以上、よろしくお願い致します。


CC BY-SA 3.0
2017-10-11T02:05:28.697
38577
2017-10-11T05:53:23.507
2017-10-11T05:49:38.523
5519
7925
question
swift ios swift3
Objective-Cで定義されたメソッドのオーバーライドでエラー


Swift 3では以下のようなメソッドシグネチャになります（`NSError` => `Error`）。

[code]

    override func loadContents(inPage page: Int, handler: ((Bool, Error?) -> Void)!) {
    
    }
    
[/code]

コツとしてメソッドのオーバーライドはXcodeの補完機能を利用して記述すると確実です。

今回の例でしたらオーバーライドしたいクラスの中で下記のように`func`や`override`を打たずにいきなり`loadc`くらいまで打つと補完が表示されるので候補から選択すると、上記のシグネチャがすべて入力されます。関数名をいきなりタイプするのがポイントです。

[code]

    class Controller: ViewController {
        loadc
    }
    
[/code]


CC BY-SA 3.0
2017-10-11T05:53:23.507
38589
2017-10-11T05:53:23.507
5519
38577
answer