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

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回答

1251閲覧

アプリ内に保存した配列を取り出せない

surf

総合スコア17

iOS

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

Swift

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

0グッド

0クリップ

投稿2018/01/23 05:39

編集2018/01/28 12:11

###前提・実現したいこと
エラーを消したい。
テーブルビューにイメージとテキストを表示したい。

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

<ViewController.swift> cell.setCell(resultArrays: resultArray[indexPath.row], sResultArrays: sResultArray[indexPath.row]) 上記箇所で以下のエラーが出ています。 Cannot convert value of type 'UIImage' to expected argument type 'String'

###該当のソースコード

import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet var tableView: UITableView! var resultArray = [UIImage]() var newResultArray: [Data]! var sResultArray = [String]() override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) if UserDefaults.standard.object(forKey: "sArray") != nil { sResultArray = UserDefaults.standard.object(forKey: "sArray") as! [String] } if UserDefaults.standard.object(forKey: "douga") != nil { newResultArray = UserDefaults.standard.object(forKey: "douga") as! [Data] resultArray.removeAll() for d in newResultArray { let image = UIImage(data: d) if let i = image { resultArray.append(i) } } } tableView.reloadData() } func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return resultArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for:indexPath) as! CustomTableViewCell cell.setCell(resultArrays: resultArray[indexPath.row], sResultArrays: sResultArray[indexPath.row]) return cell } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

import UIKit class CustomTableViewCell: UITableViewCell { @IBOutlet weak var myImageView: UIImageView! @IBOutlet weak var myTextView: UITextField! override func awakeFromNib() { super.awakeFromNib() // Initialization code } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } /// 画像・タイトル・説明文を設定するメソッド func setCell(resultArrays: String, sResultArrays: String) { myImageView.image = UIImage(named: resultArrays) myTextView.text = sResultArrays } }

###補足情報(言語/FW/ツール等のバージョンなど)
Xcode Version 9.2 (9C40b)

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

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

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

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

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

fuzzball

2018/01/23 05:58

タグは Swift2 ではなく Swift にして下さい。あと、iOSのタグも追加した方が良いと思います。
surf

2018/01/23 07:08

ありがとうございます。修正をします。ちなみに、iOSのタグとはなんでしょうか。
fuzzball

2018/01/24 00:12

resultArrayから画像を取り出そうとしたり、文字列(ファイル名)を取り出そうとしたりしていますが、実際には何が入っているのでしょうか?
surf

2018/01/24 02:54

resultArrayから画像を取り出したいと考えています。私自身で気になっているのは、let img = UIImage(named: resultArray[indexPath.row]as! String)の部分です。画像を取り出すのでas! Stringは外したいのですが、外すとCannot convert value of type 'UIImage' to expected argument type 'String'というエラーが出てしまいます。
fuzzball

2018/01/24 02:57

エラーを見ると、resultArray の中身はString型のようですが?画像ではなくファイル名が入っているのではないのですか?
surf

2018/01/24 03:41

var resultArray = [UIImage]()と宣言していますし、ファイル名を入れてはないのですが、他に考えられることはありませんか。
fuzzball

2018/01/24 03:46

あぁ、失礼。エラーメッセージを読み間違えてました。resultArrayの中身はUIImageで間違いないです。
guest

回答1

0

resultArrayの中身はUIImageですので、そのまま渡せばいいです。

swift

1cell.imageView?.image = resultArray[indexPath.row] //これは現在のコードのままでOK 2//ところで、このコードは必要なのでしょうか? 3 4//let img = UIImage(named: resultArray[indexPath.row] as! String) //不要 5//let imageView = cell.viewWithTag(1) as! UIImageView //不要 6imageView.image = resultArray[indexPath.row]

投稿2018/01/24 03:50

fuzzball

総合スコア16731

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

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

surf

2018/01/24 09:16

カメラロールで選択した画像にテキストをつけて、テーブルビュー上で表示させたいと考えています。 指摘いただいたコードを書いたのは、イメージをそのまま渡すとテーブルビューの隅っこに小さく画像が表示されるだけで、設定したUIImageViewに表示されないからです。そこで、viewWithTagを呼び出してデータの内容と結びつけようと思い書いたのですが、結論としてうまくいっていません。
fuzzball

2018/01/24 09:23

ではひとまずそのコードはコメントアウトして下さい。 セルのスタイルはCustomになっているでしょうか? その他、セルの設定がどのようになっているか教えて下さい。
surf

2018/01/24 14:00

セルがCustomになってなかったので、Customにしました。 しかし、まだうまく動きません。 その他のセルの設定とは、どこをお伝えすればいいですか?
fuzzball

2018/01/24 14:31

設定というよりも、まずはStoryboard上でどうなってるかですね。 ちなみに、セル自体は表示されてるんですよね?
surf

2018/01/24 15:06

はい。 セル自体は表示されており、セル上にはText FieldとImage Viewを置いています。
fuzzball

2018/01/25 00:13

・TextFieldは表示されてますか?(テキストじゃなくてTextFieldそのもの) ・ImageViewの背景色に何か設定してImageViewが表示されているかどうか確認して下さい。 ・imageView.image = resultArray[indexPath.row] の下に print(imageView.image) を追加して出力を教えて下さい。 ・質問内のコードを現状のコードに更新して下さい。
surf

2018/01/25 14:19 編集

カメラロールから画像を呼び出すビューにはTextFieldもImageViewも表示されているのですが、 TableViewCell上のTextFieldとImageViewは表示されません。
fuzzball

2018/01/26 00:17

なぜCustomTableViewCellのsetCellを使わないのでしょうか?
surf

2018/01/26 10:53

cell.imageView?.image = resultArray[indexPath.row]の箇所を cell.setCell(resultArray: resultArray[indexPath.row], sResultArray: sResultArray[indexPath.row])のようにしてビルドすると、シュミレーターが落ちてしまうので、修正時は使ってないものを記載しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問