错误“操作无法完成。没有这样的文件或目录”

问题描述:

自从升级到9.1后,斯威夫特语法的变化对URL的请求,我已经得到发出请求到我的API错误。例如,这个简单地尝试登录的POST请求。我可以直接在API(Strongloop Loopback)Explorer界面中直接登录,但不能从Swift登录。我得到这个错误:错误“操作无法完成。没有这样的文件或目录”

The operation couldn’t be completed. No such file or directory

这里是我的代码如下所示:

func performLoginRequestWithURL(url: NSURL, email: String, password: String) { 
      let bodyData = "email=\(email)&password=\(password)" 
      let request: NSMutableURLRequest = NSMutableURLRequest(URL: url) 
      let session = NSURLSession.sharedSession() 
      request.HTTPMethod = "POST" 
      request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding) 

      let task = session.dataTaskWithRequest(request, completionHandler: { 
       data, response, error -> Void in 
       if let error = error { 
        let errString = error.localizedDescription 
        NSNotificationCenter.defaultCenter().postNotificationName(self.lh, object: nil, userInfo: ["Result": errString]) 
        print(error.localizedDescription) 

       } else if data != nil { 
        let json = NSString(data: data!, encoding: NSUTF8StringEncoding) as! String 

        if let dictionary = JSON().parseJSON(json) as [String: AnyObject]? { 
         let accesstoken = dictionary["id"] as! String 
         let id = dictionary["userId"] as! Int 

         // MARK: - Store UID & AccessToken 
         NSUserDefaults.standardUserDefaults().setBool(true, forKey: "userLoggedIn") 
         NSUserDefaults.standardUserDefaults().setInteger(id, forKey: "userId") 
         NSUserDefaults.standardUserDefaults().setObject(accesstoken, forKey: "accessToken") 
         NSUserDefaults.standardUserDefaults().synchronize() 
         NSNotificationCenter.defaultCenter().postNotificationName(self.lh, object: nil, userInfo: ["Result": "Success"]) 
        } 
       } 

      }) 
      task.resume() 
     } 

下面是它曾经是什么样子回来时,它的工作,但他们贬值sendAsynchronousRequest方法:

func performLoginRequestWithURL(url: NSURL, email: String, password: String) { 
     let bodyData = "email=\(email)&password=\(password)" 
     var request: NSMutableURLRequest = NSMutableURLRequest(URL: url) 
     request.HTTPMethod = "POST" 
     request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding) 
     NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()){ 
      response, data, error in 

      if let error = error { 
       let errString = error.localizedDescription 
       NSNotificationCenter.defaultCenter().postNotificationName(self.lh, object: nil, userInfo: ["Result": errString]) 

      } else if data != nil { 
       let json = NSString(data: data, encoding: NSUTF8StringEncoding) as! String 

       if let dictionary = JSON().parseJSON(json) as [String: AnyObject]? { 
        let accesstoken = dictionary["id"] as! String 
        let id = dictionary["userId"] as! Int 
        var results = [String: AnyObject]() 
        results = ["at": accesstoken, "id": id] 

        // MARK: - Store UID & AccessToken 
        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "userLoggedIn") 
        NSUserDefaults.standardUserDefaults().setInteger(id, forKey: "userId") 
        NSUserDefaults.standardUserDefaults().setObject(accesstoken, forKey: "accessToken") 
        NSUserDefaults.standardUserDefaults().synchronize() 
        NSNotificationCenter.defaultCenter().postNotificationName(self.lh, object: nil, userInfo: ["Result": "Success"]) 
       } 
      } 

     } 
    } 

事实证明这个问题无关的新的语法和一切与iOS的9和方式请求被制造的T o从模拟器本地主机。我能够做的请求到我的本地IP 10.x.x.2并且不再工作,我必须使用127.0.0.1代替。当通过电话连接时,这会很困难。我现在得每次更改IP ...