Swift3でプロジェクト内のファイルを取得する方法

こんにちは、プログラマーの@Yuuです。
プロジェクト内に配置したファイル(↓のような感じに)
をSwiftで取得する方法が中々分からなかったのでご紹介。
スポンサーリンク
プロジェクト内のファイルを取得する
今回はtxtファイル・pngファイルを取得してみます。
どの形式でもファイルを取得する部分はほとんど一緒なので、txtファイルを取得するのを重点的に解説します。ちなみにtxtファイルではなくJSONファイルでも処理はほぼ一緒になります。
プロジェクト内には以下のように「test.json」「test.txt」「pic.png」を配置した状態で解説を行います。
txtファイルを取得する
以下のコードはプロジェクト内に配置したtext.txtファイルの内容を、print()
で表示しつつUILabelに表示するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import UIKit class ViewController: UIViewController { @IBOutlet weak var testLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() // ファイルまでのパスを取得(同時にnilチェック) if let path: String = Bundle.main.path(forResource: "test", ofType: "txt") { do { // ファイルの内容を取得する let content = try String(contentsOfFile: path) print("content: \(content)") testLabel.text = content } catch { print("ファイルの内容取得時に失敗") } }else { print("指定されたファイルが見つかりません") } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } |
この記事の主旨である「プロジェクト内のファイルの取得する」というのはマーカーを引いている12行目です。
12行目のBundle.main.path(forResource:ofType:)
で指定したファイルのパス(String型)を取得する事が出来ます。
また、ファイル名や拡張子が違ったり、プロジェクト内のリソースに取得したいファイルがうまく読み込めていない場合nil
が返ります。
ファイルまでのパスさえ分かれば、後はData型にしてゴニョゴニョして..とかも出来るので、これさえ分かればこっちのもんです。
ファイル名はforResource:
、拡張子をofType:
に書けばいいので「test.json」ファイルを取得したい場合は以下のように12行目を書き換えればOK。
1 |
let path: String = Bundle.main.path(forResource: "test", ofType: "json") |
実際に実行すると以下のようにJSONファイルの内容を取得・表示する事が出来ます。
pngファイルを取得する
pngファイルを取得してImageViewに表示する場合は以下のようになります。
1 2 3 4 5 6 7 8 9 |
// ファイルまでのパスを取得(同時にnilチェック) if let path: String = Bundle.main.path(forResource: "pic", ofType: "png") { // ImageViewに画像を表示 myimageView.image = UIImage(contentsOfFile: path) }else { print("指定されたファイルが見つかりません") } |
↓結果
あとがき
この方法を知っているとオフライン環境でも画像・動画・JSONなどを扱うプログラムが書けますし、JSONファイルを入れて簡単な動作確認を行う...なんて事も出来ます。
色々便利!
ではでは
今回はこの辺で!ヽ(•̀ω•́ )ゝ✧
