У меня проблема с использованием
if let wd = UIApplication.shared.delegate?.window {
var vc = wd!.rootViewController
Если я помещу этот фрагмент кода в Dispatch, предупреждающее сообщение исчезнет, но приложение не будет отображаться правильно. Если я удалю отправку, у меня появится предупреждающее сообщение.
UIWindow.rootViewController должен использоваться только из основного потока
И
UIApplication.delegate должен использоваться только из основного потока
Этот класс специально предназначен для загрузки с помощью progressBar.
public func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
print("Download finished: \(location)")
...
do {
let result = try FileManager.default.replaceItemAt(URL(fileURLWithPath: Constants.Path.temp.stringByAppendingPathComponent(path: "temp.zip")), withItemAt: URL(fileURLWithPath: location.path))
let source = Constants.Path.tempZipFile
let destination = Constants.Path.temp.stringByAppendingPathComponent(path: "dezipped")
var myDict = [String:Any]()
myDict["source"] = source
myDict["destination"] = destination
DispatchQueue.main.async { //IF I REMOVE THIS => PB OR THREAD IN MAIN
if let wd = UIApplication.shared.delegate?.window {
var vc = wd!.rootViewController
if(vc is UINavigationController){
vc = (vc as! UINavigationController).visibleViewController
}
if(vc is WebViewController){
NotificationCenter.default.post(name: .DeflatSynchroFilesWebView, object: myDict, userInfo: nil)
}
else
{
NotificationCenter.default.post(name: .DeflatSynchroFiles, object: myDict, userInfo: nil)
}
}
}
} catch let writeError as NSError {
print("error writing file temp.zip to temp folder")
}
Как удалить предупреждение, не вызывая ошибок в моем приложении?
Заранее спасибо.
DispatchQueue.main.sync
? - person Sweeper   schedule 05.09.2019