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が真っ白になっていて表示されていません。
解決法につきまして、教えていただけましたら嬉しいです。
thmbnaill に入ってるものは画像のパス (フルパス) にみえます。URL 文字列 (file: で始まるもの) ではないので URL(string:) に失敗してるのでは。というか、もともとパスなのにわざわざ一度 URL にしてからパスにする意味が分かりません。あと、フルパスを保存するのは良くないのでは…。
遅くなり申し訳ございません。確かに、入れる形式を間違えてたようです。URLとpathの型の違いがよくわかっていなかったようです…。
Realmにファイル名のみ格納→Realmから取り出したファイル名をURL型の変数にappend→path型に変換→ImageViewに表示 でうまく行きました。ありがとうございました!
回答1件
あなたの回答
tips
プレビュー