Start 2025 on time and up to date. Seamlessly integrate your calendars into Dropbox with these simple steps.

Forum Discussion

ncljames's avatar
ncljames
Helpful | Level 5
6 years ago

SwiftDropbox too many write operations when writing 4 files

Hi there, I'm using the SwiftyDropbox library to upload files to Dropbox in an iOS app (Swift). I have a loop where I initiate uploads for 4 files: for filePath in filePaths { let fileUrl: URL!...
  • ncljames's avatar
    ncljames
    6 years ago

    Thanks I didn't think to look at the test cases! For future reference for other users looking for the same, here's the version of my Swift code adapted from the test that works:

    var filesCommitInfo = [URL : Files.CommitInfo]()
    
    for filePath in filePaths {
        let fileUrl: URL! = URL(string: "file://\(filePath)")
        let uploadToPath = "/\(fileUrl.lastPathComponent)"
        filesCommitInfo[fileUrl] = Files.CommitInfo(path: uploadToPath, mode: Files.WriteMode.overwrite)
    }
    
    self.dropboxClient!.files.batchUploadFiles(
        fileUrlsToCommitInfo: filesCommitInfo,
        responseBlock: { (uploadResults: [URL: Files.UploadSessionFinishBatchResultEntry]?,
    finishBatchRequestError: CallError<Async.PollError>?,
    fileUrlsToRequestErrors: [URL: CallError<Async.PollError>]) -> Void in if let uploadResults = uploadResults { for (clientSideFileUrl, result) in uploadResults { switch(result) { case .success(let metadata): let dropboxFilePath = metadata.pathDisplay! print("Upload \(clientSideFileUrl.absoluteString) to \(dropboxFilePath) succeeded") case .failure(let error): print("Upload \(clientSideFileUrl.absoluteString) failed: \(error)") } } } else if let finishBatchRequestError = finishBatchRequestError { print("Error uploading file: possible error on Dropbox server: \(finishBatchRequestError)") } else if fileUrlsToRequestErrors.count > 0 { print("Error uploading file: \(fileUrlsToRequestErrors)") } })

    PS Greg I've been browsing the forums lately and you seem to be everywhere, answering people's questions with unlimited patience and kindness. Just wanted to say you're a superstar, thanks