Objective-Cで書かれたMLPAutoCompleteTextFieldライブラリを使用するSwift iOSプロジェクトがあります。ここに私のスウィフトクラスが実装しようとしているMLPAutoCompleteTextFieldDataSourceプロトコルである:ここではObjective-Cプロトコルを実装しようとしているSwiftクラスが、オプションのメソッド競合エラーで失敗しました
@protocol MLPAutoCompleteTextFieldDataSource <NSObject>
@optional
- (void)autoCompleteTextField:(MLPAutoCompleteTextField *)textField
possibleCompletionsForString:(NSString *)string
completionHandler:(void(^)(NSArray *suggestions))handler;
- (NSArray *)autoCompleteTextField:(MLPAutoCompleteTextField *)textField
possibleCompletionsForString:(NSString *)string;
@end
は私スウィフトクラスです:
class MyAutocompleteDataSource : NSObject, MLPAutoCompleteTextFieldDataSource {
override func autoCompleteTextField(textField : MLPAutoCompleteTextField,
possibleCompletionsForString : String)
-> Array<String> {
return nil
}
}
コンパイルした後、これら2つのエラーが報告されています
エラー:(17,23)メソッドは、スーパークラスのメソッドをオーバーライドしません。
エラー:(17、23)のObjective-Cメソッド 'autoCompleteTextField:possibleCompletionsForString:' メソッドによって提供 'autoCompleteTextField(:possibleCompletionsForString :)' オプション要求メソッド 'autoCompleteTextField(:possibleCompletionsForString :)' との競合プロトコルにおける「MLPAutoCompleteTextFieldDataSource '
これを修正する方法だけでなく、SwiftでObj-Cプロトコルを実装するときにさまざまなタイプ(配列、コールバックなど)をマップする方法に関するいくつかの一般的なルールや参照を指摘できれば本当に感謝しています。