ファイルを抽象化した構造体を作る(1)2021/02/08に公開2021/02/22iOSSwiftXcodetechこんにちは。ZennではiOSアプリ開発の普段自分が使っているちょっとしたTipsなどを書いていければと思っております。当記事だけで終わりというわけではなく、続き物にしていく予定なのでよろしくおねがいします。ファイルを取り扱う構造体iOSアプリ開発では、永続的データやキャッシュのためにテキストや画像や動画等のファイルを取り扱うことも多いと思います。参照し、そのメソッドを使用していきます。基本的には操作する(または参照する)ファイルの絶対パスを引数にして処理を行わせますが、ここが冗長になってしまうソースコードをたびたび見ることがあります。パス文字列とファイル操作自体が分かれていることは責務の分離としては間違いではないとは思いますが、これらの実装をもっとシンプルに書けるようにして開発を楽にしていきたいものです。定数に持つシンプルな構造体にします。"path/to")このようにシンプルです。この構造体に様々な機能を拡張していきます。特定のパスをすぐ参照できるようにするiOSアプリではファイルの置かれる場所はある程度限定されます。そこでそのディレクトリパスは定数で定義しておくといいと思います。Bundle.main.bundlePath}とりあえず、よく使うであろうディレクトリのパスを4つ定数定義しました。詳しくはこちらを参照https://developer.apple.com/icloud/documentation/data-storage/index.htmlパス文字列が定義できるとFile構造体を作ることができます。File構造体自体もこのように定数定義しておくと何かと便利です。.documentDirectoryこれでドキュメントディレクトリへの参照が簡単かつ直感的にできるようになりました。パスの連結を簡単にするFile構造体の中身はパス文字列だけです。このパス文字列にディレクトリ名やファイル名を足していくことになります。"+"演算子で行えるようにしておきます。}}構造体なので、元の構造体のパス文字列を変更するのではなく、パス文字列を変更した新しい構造体を返していることがミソです。(ドキュメントディレクトリ)/hoge/test.txtというパス文字列を持ったFile構造体を簡単に作れます。同じファイルかどうかを判定できるようにする同じパス文字列を持つFile構造体は"同じファイルである"といえると思うので、Equatableに準拠させてやりましょう。Equatableに準拠すると、比較がしやすい上に、配列操作などでも強力な機能を持つことができます。}}まとめここまででFile構造体を作る特定のディレクトリをすぐ参照できるパス文字列を+演算子で連結できるEquatableに準拠するというところまでやりました。これだけだと、まだそんなに便利ではありません。次回以降でもう少し使い勝手をよくしていきましょう。nakayasu-yuichiiOS開発歴がそこそこ長くなってきました。Swiftが好きなのでSwiftの小ネタ中心にブログを執筆しています。Discussionnakayasu-yuichiiOS開発歴がそこそこ長くなってきました。Swiftが好きなのでSwiftの小ネタ中心にブログを執筆しています。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。