Как проверить статус загрузки данных из iCloud? - PullRequest
0 голосов
/ 05 февраля 2020

Мне нужна помощь относительно FileManager. У меня есть этот код, в котором он должен проверить состояние загрузки файла из iCloud Storage в Local Storage , но, к сожалению, он всегда не может Не удалось получить файлы резервных копий .

//-------------------------------------------------------------------
// Determine the download status
//-------------------------------------------------------------------
@objc func checkDownLoadStatus() {
    let bAvailable = downloadFileIfNotAvailable(cloudURL)
    if bAvailable == true {
    //    tm.invalidate()
        // move the DB from the cloud to the local
        DispatchQueue.global(qos: .default).async {
             // Get the local destination // APP
            let strWorkPath = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true)[0]
            let strPlistPath = "\(strWorkPath)/Preferences/\(self.cloudURL.lastPathComponent)"
            let localURL = URL(fileURLWithPath: strPlistPath)

            let error: Error! = nil
            do {
                if FileManager.default.fileExists(atPath: self.cloudURL.path){
                     try FileManager.default.copyItem(at: self.cloudURL, to: localURL)

                    //try FileManager.default.setUbiquitous(false,
                                                         // itemAt: self.cloudURL,
                                                          //destinationURL: localURL)
                     print("Copy to Local Storage")
                     self.restorePlistData(strPlistPath)
                    } else {
                    print("Error \(error?.localizedDescription ?? "")")

                        self.performSelector(onMainThread: #selector(self.getBackupDataFailed), with: nil, waitUntilDone: false)
                    }
                } catch {
                 print("Error \(error.localizedDescription)")
            }
            //Hide // indicator
           SVProgressHUD.dismiss()
        }
    }
}

Код для функций, используемых в приведенном выше коде

//-------------------------------------------------------------------
//Judgment or can be downloaded
//-------------------------------------------------------------------

func downloadFileIfNotAvailable(_ file: URL?) -> Bool {
    if let rv = try? file?.resourceValues(forKeys: [.isUbiquitousItemKey, .ubiquitousItemIsDownloadingKey]) {
        if rv.isUbiquitousItem != nil {
            if let status = rv.ubiquitousItemDownloadingStatus {
                if status == .downloaded {
                    return true
                } else {
                    self.performSelector(inBackground: #selector(startDownLoad(_:)), with: file)
                    return false
                }
            }
        }
        navigationController?.popViewController(animated: true)
    }
    return true
}
 //-------------------------------------------------------------------
//Processing at the time of backup acquisition failure
//-------------------------------------------------------------------
@objc func getBackupDataFailed() {

    let alertController = UIAlertController(title: "", message: "Failed to get the backup file.", preferredStyle: .alert)
    alertController.addAction(UIAlertAction(title: "OK", style: .default))
    self.present(alertController, animated: true, completion: nil)
}

Я пытался пересмотреть свои коды, но, к сожалению, он все еще не ' т работа. Я надеюсь, что вы можете помочь мне, потому что я работаю на это почти две недели, но не повезло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...