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

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

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

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

Q&A

解決済

1回答

838閲覧

realmに保存した画像のパスから画像を表示させたい

shokoba58

総合スコア99

Swift

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

0グッド

0クリップ

投稿2022/06/02 04:22

realmに保存した画像のパスから画像を表示させたいのですが、シミュレーター上で画像が全く表示できません。

以下該当部分コードです。

swift

1/ 2// AddView.swift 3// Todo 4// 5// 6 7import UIKit 8import RealmSwift 9 10class SettingsViewController: UITableViewController,UIImagePickerControllerDelegate, UINavigationControllerDelegate { 11 12 var itemList: Results<PictItem>! 13 14 @IBOutlet weak var thmbnaill: UIImageView! 15 16 let realm = try! Realm() 17 18 override func viewDidLoad() { 19 super.viewDidLoad() 20 pictDisp() 21 } 22 23 func pictDisp(){ 24 25 let pictData = realm.objects(PictItem.self) 26 //URL型にキャスト 27 let fileURL = URL(string: pictData[0].top_url) 28 //パス型に変換 29 let filePath = fileURL?.path 30 thmbnaill.image = UIImage(contentsOfFile: filePath!) 31 } 32}

デバッグしたところ、最終的にthmbnaillの中には

String? "/Users/ユーザ名//Developer/CoreSimulator/Devices/853843F4-4C53-447F-B93B-A7EC2B93EF0B/data/Containers/Data/Application/0565AAE3-99D3-45DB-9F10-723DE81E44CA/Documents/07FB20DB-963C-4015-8D45-4B1B484F5279.png" some

といった形で画像が入っていることは確認できました。
また、シミュレーターのフォルダの中も確認したところ、同名の画像ファイルが格納されていました。
しかし、シミュレーターを見るとImageViewが真っ白になっていて表示されていません。
解決法につきまして、教えていただけましたら嬉しいです。

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

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

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

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

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

hoshi-takanori

2022/06/02 06:57

thmbnaill に入ってるものは画像のパス (フルパス) にみえます。URL 文字列 (file: で始まるもの) ではないので URL(string:) に失敗してるのでは。というか、もともとパスなのにわざわざ一度 URL にしてからパスにする意味が分かりません。あと、フルパスを保存するのは良くないのでは…。
shokoba58

2022/06/10 02:40

遅くなり申し訳ございません。確かに、入れる形式を間違えてたようです。URLとpathの型の違いがよくわかっていなかったようです…。 Realmにファイル名のみ格納→Realmから取り出したファイル名をURL型の変数にappend→path型に変換→ImageViewに表示 でうまく行きました。ありがとうございました!
guest

回答1

0

自己解決

追記・修正の依頼の欄に記載しています。
該当部分コードは以下です。

swift

1let pictData = realm.objects(PictItem.self) 2//URL型にキャスト 3let pictName = pictData[0].topPictName 4let pictURL = documentDirectoryFileURL.appendingPathComponent(pictName) 5//パス型に変換 6let filePath = pictURL.path 7thmbnaill.image = UIImage(contentsOfFile: filePath)

投稿2022/06/10 02:43

shokoba58

総合スコア99

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問