Загрузка SwiftyDropbox происходит не по порядку
У меня есть функция, которая загружает файлы из моего Dropbox в локальный каталог, а затем читает файлы в каталоге, чтобы заполнить таблицу. Две части, кажется, работают, за исключением того, что загрузка не начинается, пока остальная часть функции не будет закончена.
Я не нашел ответа в документации Swiftydropbox, которая, кажется, больше сосредоточена на IOS, чем на MacOS. Я подумал, что, возможно, загрузка в Dropbox порождает отдельный поток, а поведение может быть вызвано состоянием гонки, поэтому я добавил операторы для печати имени потока. Все шаги выполняются основным потоком.
Может кто-нибудь сказать мне, что это происходит и как я могу это исправить? Благодарю.
Вот моя функция и вывод консоли.
@IBAction func loadFromDropboxButtonClick(_ sender: NSButton) {
let client = DropboxClientsManager.authorizedClient
//Download local copy of dropbox files
print("Listing drop box files")
print("Starting with \(countInbox()) files")
print(Thread.main, Thread.current)
let listRequest = client!.files.listFolder(path: "")
.response { response, error in
if let response = response {
var downloadCount = 0
for entry in response.entries {
if (entry.pathDisplay!.contains("HoursBlock")) {
downloadCount += 1
print(Thread.main, Thread.current)
let blockFilename = entry.pathDisplay?.components(separatedBy: "/").last
let destUrl = storageUrl?.appendingPathComponent(self.localDropboxFolder).appendingPathComponent(blockFilename!)
print("Downloading block to: \(destUrl)")
let destination: (URL, HTTPURLResponse) -> URL = { temporaryURL, response in
return destUrl!
}
client!.files.download(path: entry.pathDisplay!, overwrite: true, destination: destination)
.response { response, error in
if let response = response {
// print(response)
} else if let error = error {
print(error)
}
}//download response
} //if name has hoursblock
} //for entry
print("\(downloadCount) files downloaded")
} else if let error = error {
print(error)
}
}//list & download
print("Ending with \(countInbox()) files")
print("Building table for display")
dropBoxLoader.buildImportHoursArray(localDropboxFolder: localDropboxFolder)
self.blocksFromDropboxTableView.reloadData()
borderedScrollViewTable.isHidden = false
deleteButton.isEnabled = true
print(Thread.main, Thread.current)
} //loadfromDropbox
Перечисление файлов раскрывающихся списков. Начиная с 2 файлов: {число = 1, имя = основное} {число = 1, имя = основное}. Завершение создания 2 файлов. Таблица построения для отображения. Массив построения. Файлы локальных часовых блоков [файл:/// Пользователи / гость /Documents/TestLord/hoursFromDropbox/HoursBlock_529807430, файл:/// Пользователи / гость /Documents/TestLord/hoursFromDropbox/HoursBlock_529807497] {число = 1, имя = основное} {число = 1, имя = основное} {число = 1, имя = main} {number = 1, name = main} Загрузка блока в: Необязательно (файл:/// Пользователи / гость /Documents/TestLord/hoursFromDropbox/HoursBlock_529806969) {number = 1, name = main} {number = 1, name = main} Загрузка блока в: Необязательно (файл:/// Пользователи / гость /Documents/TestLord/hoursFromDropbox/HoursBlock_529786237) {number = 1, name = main} {number = 1, name = main} Загрузка блока в: Необязательно (файл:/// Пользователи / Гость / Документы /TestLord/hoursFromDropbox/HoursBlock_529807390) {number = 1, name = main} {number = 1, name = main} Загрузка блока в: Необязательно (файл:///Users/guest/Documents/TestLord/ хоу rsFromDropbox/HoursBlock_529807430) {число = 1, имя = основное} {число = 1, имя = основное} Загрузка блока в: Необязательно (файл:/// Пользователи / гость / Документы /TestLord/hoursFromDropbox/HoursBlock_529807497) 5 загруженных файлов