LoginSignup
9
5

More than 5 years have passed since last update.

iCloud Documentへのアップロードとダウンロード方法

Posted at

はじめに

iCloudへのアップロードとダウンロードに長いこと苦戦したので備忘録として記事を書かせていただきます。

1.iCloudコンテナのURLの設定


 private var containerUrl: URL? {
        // iCloudコンテナのURL
                // 特定のiCloudコンテナを指定する場合はnilのところに書き込む
        let url = FileManager.default.url(forUbiquityContainerIdentifier: nil)

                // コンテナに追加するフォルダのパス
        let path = url.appendingPathComponent("")

        do {

                        // iCloudコンテナにフォルダの作成
            try FileManager.default.createDirectory(at: path, withIntermediateDirectories: true, attributes: nil)
        } catch let error as NSError {
            print(error)
        }
        return path
    }

※pathがnilで返って来る場合、iCloudDriveのスイッチがオフになっています。

2.アップロード方法

1 で指定したiCloudのコンテナのURLにドキュメントフォルダの中身をコピーする

// ドキュメントのURL
let documentUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first

do {
     // ドキュメントをiCloudコンテナにコピー
     try fileManager.copyItem(at: documentUrl, to: self.containerUrl)
} catch let error as NSError {
    print(error)
}

3.ダウンロードする前にiCloudとの同期を行う


DispatchQueue.main.async {
       do {
                      // iCloudからローカルにダウンロード
           try FileManager.default.startDownloadingUbiquitousItem(at: self.containerUrl)
      } catch let error as NSError {
           print(error)
      }
     }
}

4.iCloudコンテナからドキュメントにダウンロード

do {
    // iCloud上にアップロードされているフォルダがあるか確認
    if fileManager.fileExists(atPath: unwrapICloudContainerUrl.path) {
       // iCloudコンテナからドキュメントにコピー
        try fileManager.copyItem(at: self.containerUrl, to: documentUrl)
    }
}

これでiCloudコンテナにあるものをドキュメントにコピー、ダウンロードできます!

まとめ

まだiCloudを勉強しはじめたばかりでわからないことが多くあります。
NotificationCenterを使用した、アップロード時とダウンロード時の通知なども現在作成中のため、完成次第次の記事を書きたいと思います。

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5