最近 try! RxSwiftしてとことんクラッシュしています。どうもです。
そろそろ、ストアに出すかどうかは一旦置いといて、真面目に自作アプリを作ろうと決心し、
使いたかったライブラリを使ってテストプロジェクトで遊び、何のライブラリを使うか決めて動き出しました。
その中で、EZSwiftExtensionsみたいに、ある程度使いやすい単位でまとめたextensionとかをまとめたライブラリを作ろうということで、SUSwiftSugarの整備をしています。
その時に、file_path を扱う時に、StringでもNSURLでも許容できるものをと思って、FilePathConvertible
を作ってみました。
これで、 NSURL の file_path を String へ、 String の file_path を NSURL へと変換して使うことができます。
変換できることを前提にしているので、できない場合はクラッシュします
これで、例えば以下のような Extension を用意したときに、一々 String?NSURL? を気にせずに使うことができます。
public extension NSFileManager {
public func fileExists(at path: FilePathConvertible) -> Bool {
return fileExistsAtPath(path.filePath)
}
}
NSFileManager.defaultManager().fileExists("file/to/path") // String
NSFileManager.defaultManager().fileExists(fileURL) // NSURL
最大の利点は、NSURLとStringでそれぞれ関数を用意したり、使う時に変換を考えなくて済むことです。
執筆段階でまだSUSwiftSugarには実装が進んでいないですが、FilePathConvertible
を実装して、NSFileManager
周りを楽にスッキリと扱えるようにextensionを準備していく予定です。
元ネタというか、似たようなものに、URLConvertible
なるものがあります。KageeやAlamofireなどでも使われている手法で、 String でも NSURL でも、 url を同様に扱うことができる、といったものです。