【Swift UI】ファイルの読み込み
概要
テキストファイルを読み込む。読み込んだ文字列を画面に表示する。
コード
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Text(getFileStr())
}
}
}
func getFileStr() -> String {
guard let fileURL = Bundle.main.url(forResource: "ファイル名", withExtension: "拡張子"),
let fileContents = try? String(contentsOf: fileURL, encoding: .utf8) else { // 複数指定のguard let
return "読み込み失敗"
}
return fileContents
}
guard
条件を満たさない場合の処理を記述する構文。
エラーの確認や値がnil(オプショナル型変数にnilが含まれている場合にelseに飛ぶ)でないかのチェックをする。
gurad 条件式 else {
処理
returnまたはbreakまたはthrow
}
複数指定したい場合は条件をカンマ区切りで指定。
guard let
代入する値がnilの場合はfalseの処理が行われる。
複数指定したい場合は条件をカンマ区切りで指定
guard let thisStr = str, thisStr.characters.cout >= 5 else {
}
Bundleクラス
アプリのバンドルディレクトリにアクセスするためのクラス。
バンドルディレクトリには画像やサウンドファイル、ストーリーボードなどのリソース、テキストファイル、設定ファイルなどが含まれている。
Bundleクラスを使用するにはタイププロパティとして定義されているmainからアクセスする。
Bundle | Apple Developer Documentation
urlメソッド
func url {
forResource name: String?,
withExtension ext: String?
} -> URL?
- name
リソースファイル名。nilを指定した場合はextに指定した拡張子に最初に一致したファイルを返す。
- ext
リソースファイルの拡張子。空文字またはnilの場合は、拡張子なしのnameに一致したファイルを返す。
- 戻り値
ファイルのURL。ファイルが見つからなかった場合はnilを返す。
url(forResource:withExtension:) | Apple Developer Documentation
initメソッド
与えられたURLのデータを読み込んでStringを作成する。
init( contentsOf url: URL, encoding eng: String.Encoding ) throws
init(contentsOf:encoding:) | Apple Developer Documentation