Мне нужна помощь относительно 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)
}
Я пытался пересмотреть свои коды, но, к сожалению, он все еще не ' т работа. Я надеюсь, что вы можете помочь мне, потому что я работаю на это почти две недели, но не повезло.