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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

3回答

2434閲覧

URLをStringに置換したい

sunglass

総合スコア303

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

1クリップ

投稿2020/05/28 11:45

Documentsフォルダからのパス(URL型)をString型に置換したいです。

カメラアプリで撮影→画像をDocumentsへ保存→UIImageViewに表示出来たので
次にファイルパス+ファイル名のパスを作ってそのパスを元に画像を表示したいです。

ファイルパス+ファイル名のフルパスは作成出来たのですがURL型なので
String型に変換してcontentsOfFileに渡したいです。

古い記事で
https://qiita.com/pagliaccio/items/f10e3779eae18f7dc0f6
を見つけたのですがうまく置換出来なかったです。。

// Expression of type 'URL.Type' is unused type(of: imagepath) // URL to String ... // imagepathから画像を表示 let image = UIImage(contentsOfFile: imagepath!)

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

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

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

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

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

guest

回答3

0

参照先の記事には書いてありませんが、String(contentsOf:)は例外を投げるメソッドなので、例外処理を行う必要があります。

エラーが起きた場合、強制終了をしても構わないのであれば、

Swift

1let string = try! String(contentsOf: url)

で処理できますので、ご確認ください(望ましいのはdo-catch節を使った処理です)。

エラー処理の詳しい記述は下記のURLから参照できますのでご確認いただければと思います。

  • [Error Handling — The Swift Programming Language (Swift 5.2)

](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html)

ちなみに、ネット上の記事は言語バージョンの違いによって必ずしもそのまま使えるとは限りませんので、Xcodeの入力補完も併用するといいかと思います。

イメージ説明

メソッド名を途中まで打ち込むと候補が出てきますが、メソッド名の末尾にthrowsとあれば例外を投げるメソッドとなります。

このようなメソッドを扱う場合は例外処理が必要となります。

投稿2020/05/28 12:06

TsukubaDepot

総合スコア5086

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

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

sunglass

2020/05/28 13:54

ありがとうございます。 確認させていただきます。 入力補完で例外処理の必要性が確認できるの知らなかったです。。(めっちゃ助かります。)
sunglass

2020/05/29 06:19

do-catchまだ自信ないので下記のように実装してみました。。 空の場合を想定してデフォルトで画像を用意してif分岐で処理してみようと思います。。。 // パス作成 let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documetnsDirectory = paths[0] let docURL = URL(string: documetnsDirectory)! let imagepath = docURL.appendingPathComponent("test1.jpg") // URL to String変換 let path = imagepath.path // UIImageView : testImageに表示 self.testImage.image = UIImage(contentsOfFile: path)
guest

0

これで動かないですかね。全然違ったらすみません。

let url: URL = URL(string: "https://google.com")! print(url.absoluteString)

投稿2020/05/28 12:11

TakuyaAso

総合スコア1361

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

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

sunglass

2020/05/28 13:54

ありがとうございます。 確認させていただきます!
sunglass

2020/05/29 06:21

回答ありがとうございます。 自分の力不足で頂いたコードで上手く実装できなかったので、、、 下記のように処理する方法にさせていただきました。。 回答依頼快諾していただき本当にありがとうございます。 引き続きよろしくお願いします。。 // パス作成 let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documetnsDirectory = paths[0] let docURL = URL(string: documetnsDirectory)! let imagepath = docURL.appendingPathComponent("test1.jpg") // URL to String変換 let path = imagepath.path // UIImageView : testImageに表示 self.testImage.image = UIImage(contentsOfFile: path)
guest

0

自己解決

とりあえず簡易的な方法で実装しました。。

// パス作成 let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documetnsDirectory = paths[0] let docURL = URL(string: documetnsDirectory)! let imagepath = docURL.appendingPathComponent("test1.jpg") // URL to String変換 let path = imagepath.path // UIImageView : testImageに表示 self.testImage.image = UIImage(contentsOfFile: path)

投稿2020/05/29 06:22

sunglass

総合スコア303

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問