#12 Swiftで学ぶファイル読み書きの基本
Swiftのファイル操作は、throwsを使った独自のエラーハンドリングの仕組みと組み合わせて使うのが基本です。この記事では、Swiftにおけるファイル操作の基本と、iOSアプリならではの注意点を解説します。
ファイルを読み込む
do {
let content = try String(contentsOfFile: "data.txt", encoding: .utf8)
print(content)
} catch {
print("読み込みに失敗しました: \(error)")
}
以前の記事で触れたdo・try・catchが、ファイル操作でもそのまま使われます。catchブロックの中ではerrorという変数から、失敗の詳しい理由を取り出せます。
ファイルに書き込む
do {
try "こんにちは".write(toFile: "data.txt", atomically: true, encoding: .utf8)
} catch {
print("書き込みに失敗しました: \(error)")
}
atomically: trueは、書き込みの途中でアプリが強制終了しても、ファイルが中途半端に壊れた状態にならないようにする安全策です。特別な理由がない限りtrueにしておくとよいでしょう。
ドキュメントディレクトリのパスを取得する
iOSアプリでは、決められた保存場所のパスを、FileManagerという機能を使って調べます。
let documentsPath = FileManager.default.urls(
for: .documentDirectory, in: .userDomainMask
)[0]
let fileURL = documentsPath.appendingPathComponent("data.txt")
こうして得たfileURLを使ってファイルを読み書きすることで、アプリごとに用意された安全な保存領域にデータを保存できます。
Swiftならではの注意点
iPhoneアプリの開発では、パソコンのように自由な場所にファイルを保存することはできず、アプリ専用の決められた領域(ドキュメントディレクトリなど)にのみファイルを保存できます。学習用のサンプルコードと、実際のアプリ開発とでは、ファイルパスの扱い方が異なる点を覚えておきましょう。また、iOSでは端末の空き容量やアプリのサンドボックスの制約により、書き込みに失敗する可能性が常にあるため、catchブロックでの失敗時の対応(利用者への通知など)を省略しない設計を心がけましょう。
まとめ
Swiftのファイル操作はdo・try・catchと組み合わせて書きます。iPhoneアプリではFileManagerを使って保存できる場所(ドキュメントディレクトリ)を調べる必要がある点も意識しておきましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Swiftをもっと学びたい方には「これからつくる iPhoneアプリ開発入門」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿