はじめに
タイトル通りのエラーが出た時の対処法です。
例えば、Objective-Cのライブラリで、以下のようなプロトコルがあり、
@protocol Hogehoge <NSObject>
これを宣言しようとした際、
class Fuga: Hogehoge
以下のようなエラーが出ます.
Type "Fuga" does not confirm to protocol 'NSObjectProtocol'
これは、Hogehoge自体がNSObjectを継承したものなので、Fugaにその定義が無いとエラーを起こしているのですが、XCodeの補助機能で、足りていない定義を追加しようとした場合、下記のようになってしまいます。
func isEqual(_ object: Any?) -> Bool { <#code#> } var hash: Int var superclass: AnyClass? func `self`() -> Self { <#code#> } func perform(_ aSelector: Selector!) -> Unmanaged<AnyObject>! { <#code#> } func perform(_ aSelector: Selector!, with object: Any!) -> Unmanaged<AnyObject>! { <#code#> } func perform(_ aSelector: Selector!, with object1: Any!, with object2: Any!) -> Unmanaged<AnyObject>! { <#code#> } func isProxy() -> Bool { <#code#> } func isKind(of aClass: AnyClass) -> Bool { <#code#> } func isMember(of aClass: AnyClass) -> Bool { <#code#> } func conforms(to aProtocol: Protocol) -> Bool { <#code#> } func responds(to aSelector: Selector!) -> Bool { <#code#> } var description: String
解決方法
これを埋めても良いのですが・・・、
単純にプロトコルを継承するだけなのと、NSObjectが使えれば良いだけなので、
class Fuga: NSObject, Hogehoge
と、NSObjectを継承しておけば解決します。
久々にiOS開発してここで詰まってしまった為、備忘録的な記事でした。