【XCode】iCloudへのファイル保存【Swift】

iPhoneアプリ開発

パソコンなどの、データ消えたことありますか?

私はあります。綺麗さっぱり、焼け野原です。
バックアップとっておけば…とどれだけ後悔したか;;

 

iCloudへのファイル保存の方法について、記載します。

まずは全体図を。。。

  1. iCloudDocumentSyncを取り込む
  2. Xcodeにて、iCloudを使いますよ。の設定
  3. コード書いてくだけ。

 

1.ライブラリiCloudDocumentSync を取り込む

GitHub - nenosllc/iCloudDocumentSync: Integrate iCloud into iOS document projects with one-line code methods. Sync, upload, manage, and remove documents from iCloud quickly and easily. Helps to make iCloud "just work" for developers too.
Integrate iCloud into iOS document projects with one-line code methods. Sync, upload, manage, and remove documents from iCloud quickly and easily. Helps to make...

iCloudDocumentSyncをpodで取り込んでください。(podの初期設定はGoogle先生に)

podFileに取り込むためにPodfileに下記を追加します。

⇨ pod ‘iCloudDocumentSync’

Podfileを保存して”pod update”で取り込む

2.XcodeにてiCloudを利用するための設定

Xcodeプロジェクトを開きます。

 TARGETのSigining & Capabilitiesから +Capabilityを押下

 ”iCloud”を追加。

 ServiceのiCloud Documentsにチェック

 Containerは、iCloud.バンドルID

 例)iCloud.com.hogehoge.icloudsaveApp

次にinfo.plistに下記を追加(なんかコードタグがうまく動かないので、見辛いですが;;)

    <key>NSUbiquitousContainers</key>

    <dict>

        <key>iCloud.com.hogehoge.icloudsaveApp</key> ←Containerと一緒にする

        <dict>

            <key>NSUbiquitousContainerIsDocumentScopePublic</key>

            <true/>

            <key>NSUbiquitousContainerName</key>

            <string>icloudsave2</string> ←iCloudDriveに作成されるフォルダ名になる

            <key>NSUbiquitousContainerSupportedFolderLevels</key>

            <string>Any</string>

        </dict>

    </dict>

3.コードを実装する

import iCloudDocumentSyncをインポート

初期セットアップメソッドを呼び出す。

これがないと、ダメっぽいです。

cloud = iCloud.shared()
cloud.setupiCloudDocumentSync(withUbiquityContainer:"iCloud.com.hogehoge.icloudsaveApp")

ラスト、ディレクトリ作成するメソッドです。


    func createFolder() throws{
        // iCloudドキュメントURLを取得。info.plistで決めたディレクトリ
        guard var documentUrl = cloud!.ubiquitousDocumentsDirectoryURL() else {
            return
        }
        // ドキュメントURLにディレクトリ名を付加
        documentUrl = documentUrl.appendingPathComponent(backupFolderName)
        let fileManager = FileManager.default        
        let result = fileManager.fileExists(atPath: documentUrl.path)
        // ディレクトリが存在しない場合
        if  result == false{
            do {
                // ディレクトリ作成(エラーが出る可能性あり)
                try fileManager.createDirectory(at: documentUrl, withIntermediateDirectories: true, attributes: nil)
            } catch {
                throw error
            }            
        }
    }

以上です。実機で試してみてください。

念の為、このメソッドを呼び出す際は、 tryをつけてください。
do{
try createFolder()
}catch{
print(error)
}
みたいな。
ファイルの作成等は、また。

(WordPressを使いこなせていない…)

コメント

タイトルとURLをコピーしました