Tôi đang tìm nạp dữ liệu xml từ máy chủ bằng cách sử dụng NSURLSession và NSURLSessionDelegate. Phụ thuộc vào một số điều kiện tôi đang kết nối với máy chủ. Nếu tôi kết nối với tất cả mọi thứ máy chủ hoạt động tốt mà không có bất kỳ lỗi nào nhưng nếu tôi không kết nối (phụ thuộc vào điều kiện) đến máy chủ và chuyển sang một View Controller khác (bằng cách sử dụng storyboard? .instantiateViewControllerWithIdentifier (id)) Lỗi iOS:Một URLSession nền với định danh backgroundSession đã tồn tại
'URL nềnPhiên bản với nền định danhPhiên bản đã tồn tại!'
Đây là mã của tôi:
class MainClass: UITableViewController, NSURLSessionDelegate {
var task_service = NSURLSessionDataTask?()
override func viewDidLoad() {
super.viewDidLoad()
if(condition) {
getXMLFromServer()
}
}
func getXMLFromServer(){
task_service = getURLSession().dataTaskWithRequest() {
(data, response, error) -> Void in
dispatch_async(dispatch_get_main_queue(), {
// Fetching data from server
// In the end
self.session.invalidateAndCancel()
}
}
}
func getURLSession() -> NSURLSession {
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.timeoutIntervalForRequest = 30.0
session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: NSOperationQueue.mainQueue())
return session
}
func URLSession(session: NSURLSession, task: NSURLSessionTask, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void) {
completionHandler(NSURLSessionAuthChallengeDisposition.UseCredential, NSURLCredential(forTrust: challenge.protectionSpace.serverTrust!)) // Bypassing SSL error
}
}
EDIT: Tìm thấy lý do cho các lỗi.
Lỗi xảy ra do việc tạo NSURLSession trong Bộ điều khiển được gọi là Bộ điều khiển.Có dấu VC chứa mã để tải xuống PDF từ máy chủ. Nhưng tôi không biết cách giải quyết chuyện này. Dưới đây là mã được gọi là VC
class MainFormsController: UIViewController, UIPickerViewDelegate, UITextFieldDelegate, NSURLSessionDownloadDelegate, UIDocumentInteractionControllerDelegate, MFMailComposeViewControllerDelegate{
var download_task = NSURLSessionDownloadTask?()
var backgroundSession = NSURLSession()
override func viewDidLoad() {
super.viewDidLoad()
createNSURLSession()
}
/** Error occurred while creating this NSURLSession **/
func createNSURLSession() {
let backgroundSessionConfiguration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("backgroundSession")
backgroundSession = NSURLSession(configuration: backgroundSessionConfiguration, delegate: self, delegateQueue: NSOperationQueue.mainQueue())
}
func downloadPDF() {
//Download PDF
download_task = backgroundSession.downloadTaskWithURL(url)
download_task?.resume()
}
}
Xem https://stackoverflow.com/questions/37139641/issues-with-a-background-urlsession-with-identifier –