概要
iCloudDocumentsにバックアップの仕方を調べる機会がありました。
いくつか参考にさせていただいた記事はありますが、詰まった部分もあったのでまとめておく。
iCloudコンテナ作成
こちらのサイトを参考にしてください。
iCloudカスタムディレクトリの作成
private var containerUrl: URL? {
let url = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("ディレクトリ名")
do {
try FileManager.default.createDirectory(at: url!, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
//エラー処理
}
return url
}
iCloudに保存しているデータのダウンロード
FileManager.default.startDownloadingUbiquitousItem(at: (self.containerUrl)!)
iCloud書き込み
// イメージの保存
let fileURL = containerUrl?.appendingPathComponent("sample.jpeg")
let data = UIImageJPEGRepresentation(image!, 1.0)
do {
try data?.write(to: fileURL!, options: Data.WritingOptions.atomic)
} catch let error as NSError{
// エラー処理
}
iCloud読み込み
private var fileNames: [String]! = []
// 指定したディレクトリ内のファイル名を全て取得する
fileNames = try FileManager.default.contentsOfDirectory(atPath: (containerUrl?.path)!)
// ディレクトリから取得したファイル名を利用しデータの取得
let filePath = containerUrl?.appendingPathComponent("\(fileNames[0])")
do {
let data = try Data(contentsOf: filePath!)
let image = UIImage(data: data)
} catch let error as NSError {
// エラー処理
}