プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

SwiftのBox APIでファイルデータを更新する。

この記事は2018年10月10日に投稿しました。

目次

  1. はじめに
  2. 前提
  3. ファイルデータ更新処理
  4. おわりに

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回はSwiftのBox APIでファイルデータを更新する手順の紹介です。

目次へ

2. 前提

iOSアプリからBox APIにアクセスするため、Box iOS SDKライブラリを使用します。
以下の記事を参考に、Box APIを使用する準備をしておいてください。

paveway.hatenablog.com

目次へ

3. ファイルデータ更新処理

SwiftのBox APIでファイルデータを更新するには、クライアントオブジェクトのfileUploadRequestToFolderメソッドを使用します。
これは で使用したメソッドです。

以下がファイルデータを取得する手順です。 この手順は、Box iOS SDKライブラリのドキュメントFilesUpload a FileUpload from NSDataを参考にしました。

  1. Boxのクライアントオブジェクトを取得します。
  2. クライアントオブジェクトのfileUploadRequestToFolderメソッドで、ファイルアップロードリクエストを生成します。
    fileUploadRequestToFolderメソッドの引数には、

    を指定します。

  3. ファイルアップロードリクエストのperformメソッドを実行し、ファイルをアップロードします。 ファイルダウンロードの進捗状況と結果は、それぞれクロージャーで返却されます。
    ネットワークアクセスしますので、PWEditorではファイルアップロード中は、処理中ダイアログを表示しています。
  4. エラーがあれば、結果のクロージャーの引数errorが設定されます。
    アップロードされたファイルは結果のクロージャーの引数fileに設定されます。

実装例

import BOXContentSDK

/**
 ファイルのデータを更新します。

 - Parameter parentId: 親ディレクトリのID
 - Parameter fileData: ファイルデータ
 - Parameter fileName: ファイル名
 */
func updateFileData(_ parentId: String, fileId: String, localFilePath: String) {
    // 1. クライアントオブジェクトを取得します。
    guard let client = BoxContentClient.default() else {
        // クライアントオブジェ久我取得できない場合、処理を終了します。
        // 必要に応じてエラー処理を行ってください。
        return
    }

    // 2. ファイルアップロードリクエストを取得します。
    let request = client.fileUploadRequestToFolder(withID: parentId, from: fileData, fileName: fileName)
    
    // 3. ファイルをアップロードします。
    request.perform(progress: { (totalBytesTransferred, totalBytesExpectedToTransfer) -> Void in
    }, completion: { (file: BOXFile?, error: Error?) -> Void in
        // 4. エラーかチェックします。
        if let error = error {
            // エラーの場合、処理を終了します。
            // 必要に応じてエラー処理してください。
            return
        }

        // 以降正常終了した場合の処理を記述してください。
    })
}

目次へ

4. おわりに

Box APIディレクトリやファイルをIDで管理しています。
しかしこのfileUploadRequestToFolderメソッドは、ファイルはIDではなくファイル名で指定しています。
この違いは何か少し気になります。

お仕事決まれば全額キャッシュバック!転職特化型Ruby実践研修【ポテパンキャンプ】

目次へ