Swiftでローカルにファイルを保存し、NSURLでアクセスする方法

otaguro 4,988views 更新:2015年8月6日

UIWebViewなどでローカルのファイルを開きたいときには、NSURLでアクセスできるような形式で保存する必要があります。
下記は、NSData型のデータを保存して、データのNSURLを返すコードです。

        // ファイルをキャッシュする際のキー
        let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
        let cacheKey = "/test/1"
        let fileName = "test.txt"

        // ディレクトリのパス
        let folderPath=documentsPath+cacheKey
        // ファイルのパス
        let filePath = documentsPath+cacheKey+"/"+fileName

        //ディレクトリとファイルの有無を調べる
        let fileManager = NSFileManager.defaultManager()
        var isDir : ObjCBool = false
        let isFile = fileManager.fileExistsAtPath(filePath, isDirectory: &isDir)      
        fileManager.fileExistsAtPath(folderPath, isDirectory: &isDir)

        //ファイルのパスからNSURLを作成することが出来ます
        let url = NSURL(fileURLWithPath: filePath)

        //ディレクトリが存在しない場合に、ディレクトリを作成する
        if !isDir {
                fileManager.createDirectoryAtPath(folderPath ,withIntermediateDirectories: true, attributes: nil, error: nil)
        }

        //ファイルが存在しない場合に、ファイルを保存する
        if isFile {
                return url
        }else{
            //responseは保存しておきたいデータ(NSData型)
            response.writeToFile(filePath, atomically: true)
                return url
        }

DocumentDirectory以外の場所では、writeToFileで保存出来ないので、注意を払う必要があります。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません