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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Q&A

1回答

1748閲覧

Cannot assign value of type 'String' to type 'クラス名'エラーの問題点、解決方法

kuro9681

総合スコア10

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

0グッド

0クリップ

投稿2019/09/10 11:20

#前提
以下のようなクラスを作り、別の画面のテキストフィールドで入力した「title」「detail」の文字を受け取り、
受け取った値をTableViewのセルに保存し、「title」はCellに表示するように作成をしたいのですが、以下のエラーで躓いてしまいました。
※保存されたTableViewのセルをタップした場合、保存した「title」「detail」が詳細画面で表示される仕組み。

経緯としては元々クラスを作らずに作成を進めていましたが、このままでは途中で表示する要素が増えた時にコードの編集が必要な箇所が多岐にわたると指摘を受けたため、クラスで管理するように変更しようと試行錯誤している状況となります。
解決方法や問題点などのご指示をいただけたらと思います、よろしくお願いいたします。

import UIKit class ToDoInformation { var title: String var detail: String init(_ title: String, _ detail: String) { self.title = "タイトル初期値" self.detail = "詳細初期値" } } class ToDoTableViewController: UITableViewController { let userDefaults = UserDefaults.standard var todos = [ToDoInformation]() @IBAction func rewindTitle(sender: UIStoryboardSegue) { guard let previousTitle = sender.source as? AddController, let todo = previousTitle.taitle else { return } if let selectedIndexPath = self.tableView.indexPathForSelectedRow { self.todos[selectedIndexPath.row] = todo } else { self.todos[selectedIndexPath.row].title = todo self.todos.append(todo) } let previousDetail = sender.source as? AddController let hiddendetail = previousDetail?.detail if let selectedIndexPath = self.tableView.indexPathForSelectedRow { self.details[selectedIndexPath.row] = hiddendetail ?? "" } else { self.details.append(hiddendetail ?? "") } self.tableView.reloadData() } ~

#発生しているエラーメッセージ

>self.todos[selectedIndexPath.row] = todo //この部分で以下のエラー Cannot assign value of type 'String' to type 'ToDoInformation' >self.todos.append(todo) //この部分で以下のエラー Cannot convert value of type 'String' to expected argument type 'ToDoInformation'

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

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

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

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

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

guest

回答1

0

google翻訳
型 'String'の値を期待される引数型 'ToDoInformation'に変換できません

投稿2019/09/10 13:22

y_waiwai

総合スコア87774

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

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

kuro9681

2019/09/11 02:02

なるほど、つもりどのように書けばエラーが出ずに実装できますでしょうか?
y_waiwai

2019/09/11 02:18

まずはそのtodoってのがナニモノなのか調べてみては
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問