realmに保存した画像のパスから画像を表示させたいのですが、シミュレーター上で画像が全く表示できません。
以下該当部分コードです。
swift
/ // AddView.swift // Todo // // import UIKit import RealmSwift class SettingsViewController: UITableViewController,UIImagePickerControllerDelegate, UINavigationControllerDelegate { var itemList: Results<PictItem>! @IBOutlet weak var thmbnaill: UIImageView! let realm = try! Realm() override func viewDidLoad() { super.viewDidLoad() pictDisp() } func pictDisp(){ let pictData = realm.objects(PictItem.self) //URL型にキャスト let fileURL = URL(string: pictData[0].top_url) //パス型に変換 let filePath = fileURL?.path thmbnaill.image = UIImage(contentsOfFile: filePath!) } }
デバッグしたところ、最終的に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が真っ白になっていて表示されていません。
解決法につきまして、教えていただけましたら嬉しいです。
thmbnaill に入ってるものは画像のパス (フルパス) にみえます。URL 文字列 (file: で始まるもの) ではないので URL(string:) に失敗してるのでは。というか、もともとパスなのにわざわざ一度 URL にしてからパスにする意味が分かりません。あと、フルパスを保存するのは良くないのでは…。
遅くなり申し訳ございません。確かに、入れる形式を間違えてたようです。URLとpathの型の違いがよくわかっていなかったようです…。
Realmにファイル名のみ格納→Realmから取り出したファイル名をURL型の変数にappend→path型に変換→ImageViewに表示 でうまく行きました。ありがとうございました!
まだ回答がついていません
会員登録して回答してみよう