質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

604閲覧

swift タイプ『』はプロトコル『』に準拠していませんのエラー

Kumt

総合スコア4

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/02/16 15:28

題名の通りなのですが、このエラーの意味があまり理解できずに困っています。助けてください。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

かなりざっくりですが、
プロトコルというのは、「この関数や変数を実装してくださいね」というルールだけを決めたものです。

swift

1protocol HogeProtorol { 2 func Hoge() 3}

例えば上記のプロトコルに準拠しているクラスなどはHogeという関数を絶対に持っているという事がいえます。
逆に言えば、Hoge関数を実装していないクラスは「準拠していない」という理由でコンパイラに弾かれます。

swift

1class AAA: HogeProtorol { 2 3}

↑HogeProtorolに準拠していると見せかけてHoge関数が実装されていないので、コンパイルエラー。

アプリを作っていてよくあるのは、UITableViewDelegate(←これがプロトコル)などをクラスのコロンの後ろに書いたは良いものの、実装しなければいけない関数を実装しわすれていると「タイプ『』はプロトコル『』に準拠していませんのエラー」が出ると思います。

なお、実装しているつもりでも、関数の名前などが一文字でも違うと違う関数としてみなされるため、
例えば開発環境が変わってプロトコルの定義が少しだけ変わった場合に、いつのまにかクラスがそのプロトコルに準拠しなくなっている、なんて事もありえます。

投稿2020/02/17 00:47

編集2020/02/17 00:49
takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kumt

2020/02/17 09:53

丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問