#author("2016-06-25T08:29:51+00:00","default:nitta","nitta") [[iOS]] *iOS におけるデータファイルの格納について [#b4cc4d81] **ファイルの置き場所について (/Documents, /tmp, /Library/Cache) [#oa8078af] iOS Storage Guideline https://developer.apple.com/icloud/documentation/data-storage/index.html - ユーザが残したいファイルは /Documents に置く。永続的に存在し続け、iCloud にもバックアップされる。 - 一時的なファイルは /tmp におく。自分で消さない限り永続的に存在し続けるが、iCloudにはバックアップされない。 - 自動的に消されてもよいデータは /Library/Caches におく。勝手に消されることがあるし、iCloudにはバックアップされない。 **ファイル操作 NSFileManager [#wf98842e] let manager = NSFileManager manager.copyItemAtPath(srcPath, toPath: toPath, error: nil) // コピーする manager.moveItemAtPath(srcPath, toPath: toPath, error: nil) // 移動する manager.removeItemAtPath(filePath, error: nil) // 削除する var flag:Bool = manager.fileExistsAtPath(path) // ファイルの存在をチェックする var isDir: Bool = false flag = manager.fileExistsAtPath(path,isDirectory: &isDir) // isDirはディレクトリかどうか manager.createDirectoryAtPath(path, withIntermediateDirectories: true, attributes: nil) // ディレクトリの作成 **アプリケーション固有ストレージにあるファイルの削除 [#of527c90] let fileName: String = ... let homePath: String = NSHomeDirector() let docPath: String = homePath.stringByAppendingPathComponent("Documents") let filePath: String = docPath + "/" + fileName; let manager: NSFileManager = NSFileManager.defaultManager() do { try manager.removeItemAtPath(filePath) } catch _ { /* エラー処理 */ } ** 指定したディレクトリ下の全てのファイルにを操作する [#ta49b3ab] var files: [String] = [] let homePath: String = NSHomeDirector() let docPath: String = homePath + "Documents" let manager: NSFileManager = NSFileManager.defaultManager() do { let paths = try manager.contentsOfDirectoryAtPath(homePath) for path in paths { print("path = \(path)" } ... } catch let error as NSError { print("error \(error)") } catch _ { print("error???") }