我有一个应用程序,用户可以下载pdf文件。我最近转移到alamofire 4和swift 3.我尝试在下载完成后查看pdf文件,但它抛出Realm accessed from incorrect thread.
这是我的代码:
Alamofire.download(url, method: .get, encoding: JSONEncoding.default, to: destination)
.downloadProgress(queue: DispatchQueue.global(qos: .utility)) { progress in
DispatchQueue.main.async {
magazineObject.progressBarDownload = self.percentProgress
magazineObject.progressBarTitle = self.percentProgressNext.cleanValue
}
}
}
.validate { request, response, temporaryURL, destinationURL in
self.localPath = destinationURL
magazineObject.pathDatabase = String(describing: self.localPath!)
magazineObject.progressBarDownload = Double(self.percentProgressFinal)
magazineObject.progressBarTitle = Float(self.displayFinalLabelPercent).cleanValue
magazineObject.statusDarkViewAfterRelaunch = 1
magazineObject.statusDownload = self.statusDatabase
try! realm.write {
realm.add(magazineObject)
}
return .success
}
答案 0 :(得分:1)
尝试在validate
块
.validate { request, response, temporaryURL, destinationURL in
self.localPath = destinationURL
magazineObject.pathDatabase = String(describing: self.localPath!)
magazineObject.progressBarDownload = Double(self.percentProgressFinal)
magazineObject.progressBarTitle = Float(self.displayFinalLabelPercent).cleanValue
magazineObject.statusDarkViewAfterRelaunch = 1
magazineObject.statusDownload = self.statusDatabase
// create new object here
let realm = try! Realm()
try! realm.write {
realm.add(magazineObject)
}
return .success
}
您可以在领域文档https://realm.io/docs/swift/latest/#using-a-realm-across-threads
中查看详细信息