Ich erhalte XML-Daten vom Server mithilfe von NSURLSession und NSURLSessionDelegate. Hängt von einigen Bedingungen ab, die ich mit Server verbinde. Wenn ich eine Verbindung zum Server herstelle funktioniert alles ohne Fehler, aber wenn ich keine Verbindung (abhängig von der Bedingung) zum Server und zu einem anderen View Controller (mit Storyboard? .instantiateViewControllerWithIdentifier (id)) bekomme, bekomme ich Folgendes IOS-Fehler:Eine Hintergrund-URLSession mit Bezeichner backgroundSession ist bereits vorhanden
'Eine Hintergrund-URLSession mit Bezeichner backgroundSession existiert bereits!'
Hier ist mein Code:
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: den Grund für den Fehler gefunden.
Fehler bei der Erstellung von NSURLSession im Called View Controller.Called VC enthält Code zum Herunterladen von PDF vom Server. Aber ich weiß nicht, wie ich das lösen soll. Unten ist der Code von Called 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()
}
}
Siehe https://stackoverflow.com/questions/37139641/issues-with-a-background-urlsession-with-identifier –