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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

1860閲覧

Binary operator '==' cannot be applied to operands of type 'String' and 'Bool'を解消したい

tubajuro16

総合スコア12

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2019/12/30 07:43

エラーの内容的にはString型とBool型でそれぞれ別だよということだと思うのですが、下記のViewControllerを見返しても問題箇所がわかりません。解消させるために見なければいけない場所をご存知でしたら、ご教授お願いいたします。

if correctAnswer == pickedAnswer{ のところでエラーが出ます(コードに目標をつけてます)

Swift

1 2import UIKit 3 4class ViewController: UIViewController, NowScoreDelegate { 5 6 7 8 @IBOutlet weak var imageView: UIImageView! 9 10 @IBOutlet weak var maxScoreLabel: UILabel! 11 12 var correctCount = 0 13 var wrongCount = 0 14 var maxScore = 0 15 var questionNumber = 0 16 17 18 let imagesList = ImagesList() 19 20 //IBActionで検知した正当がどちらなのか検知する変数 21 var pickedAnswer = false 22 23 var soundFile = SoundFile() 24 25 var changeColor = ChangeColler() 26 27 var gradientLayer = CAGradientLayer() 28 29 30 override func viewDidLoad() { 31 super.viewDidLoad() 32 33 gradientLayer = changeColor.changeColler(topR: 0.07, topG: 0.13, topB: 0.13, topAlpha: 1.0, bottomR: 0.54, bottomG: 0.74, bottomB: 0.74, bottomAlpha: 1.0) 34 gradientLayer.frame = view.bounds //View全体に広がる 35 36 view.layer.insertSublayer(gradientLayer, at: 0) 37 38 39 imageView.layer.cornerRadius = 20.0 40 } 41 42 override func viewWillAppear(_ animated: Bool) { 43 super.viewWillAppear(animated) 44 45 correctCount = 0 46 wrongCount = 0 47 questionNumber = 0 48 49 imageView.image = UIImage(named: imagesList.list[0].imageText) 50 51 if UserDefaults.standard.object(forKey: "beforeCount") != nil { 52 maxScore = UserDefaults.standard.object(forKey: "beforeCount") as! Int 53 } 54 55 maxScoreLabel.text = String(maxScore) 56 57 } 58 59 @IBAction func answer(_ sender: Any) { 60 61 if (sender as AnyObject).tag == 1 { 62 63 soundFile.playSound(fileName: "maruSound", extensionName: "mp3") 64 65 pickedAnswer = true 66 //丸ボタンが押下されたとき 67 68 //ユーザーが押したボタンが丸だった 69 70 //丸ボタンの音声を流す 71 72 73 }else if (sender as AnyObject).tag == 2 { 74 75 soundFile.playSound(fileName: "bastuSound", extensionName: "mp3") 76 77 pickedAnswer = false 78 //バツボタンが押下されたとき 79 80 //ユーザーが押したボタンがバツだった 81 82 //バツボタンの音声を流す 83 84 85 86 } 87 88 //チェック 89 //回答ががあっているかどうか 90 //pickedAnswerとImagesListのcorrectOfNotの値が一致しているかどうか 91 check() 92 nextQuestions() 93 94 95 96 } 97 98 func check() { 99 100 let correctAnswer = imagesList.list[questionNumber].imageText 101 if correctAnswer == pickedAnswer{   ※ここで表題のエラーが出る。 102 103 print("正解") 104 correctCount = correctCount + 1 105 106 } else { 107 print("間違い") 108 wrongCount = wrongCount + 1 109 } 110 } 111 112 func nextQuestions() { 113 114 if questionNumber <= 9 { 115 116 questionNumber = questionNumber + 1 117 imageView.image = UIImage(named: imagesList.list[questionNumber].imageText) 118 119 } else { 120 print("問題終了") 121 //画面遷移 122 performSegue(withIdentifier: "next", sender: nil) 123 124 } 125 126 } 127 func nowScore(score: Int) { 128 129 soundFile.playSound(fileName: "sound", extensionName: "mp3") 130 maxScoreLabel.text = String(score) 131 132 } 133 134 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 135 if segue.identifier == "next" { 136 137 let nextVC = segue.destination as! NextViewController 138 139 nextVC.correctedCount = correctCount 140 nextVC.wrongCount = wrongCount 141 nextVC.delegate = self 142 } 143 } 144 } 145

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

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

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

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

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

guest

回答1

0

ベストアンサー

let correctAnswer = imagesList.list[questionNumber].imageText

correctAnswerって文字列がはいってるようにしか見えないですが、

エラーの内容的にはString型とBool型でそれぞれ別だよということだと思うのですが

まさにそういうエラーだと思われますが、何がわからないのでしょうか

投稿2019/12/30 07:57

y_waiwai

総合スコア87784

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

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

tubajuro16

2019/12/30 08:04

let correctAnswer = imagesList.list[questionNumber].imageText ↓ let correctAnswer = imagesList.list[questionNumber].answer 上記の手直しで改善いたしました。単純に私の見落としでした。初歩的なミスをご指摘いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問