当前位置: 首页 > 面试题库 >

我该如何解决“错误域= NSCocoaErrorDomain代码= 3840”没有值。“ UserInfo = {NSDebugDescription =没有值。}”

车思淼
2023-03-14
问题内容

当我运行代码时,出现此错误,我不知道为什么。

错误域= NSCocoaErrorDomain代码= 3840“无值。” UserInfo = {NSDebugDescription =无值。}

我在互联网上寻找它,但没有找到任何东西。

这是我的代码:

 let myUrl = NSURL(string: "http://foodhelper.club/registerUser.php");
    let request = NSMutableURLRequest(URL:myUrl!);
    request.HTTPMethod = "POST";

    let postString = "userEmail=\(userEmail!)&userFirstName=\(userFirstName!)&userLastName=\(userLastName!)&userPassword=\(userPassword!)";

    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

    NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in

        dispatch_async(dispatch_get_main_queue())
        {



            if error != nil {
                self.alertMessage(error!.localizedDescription)
                print("fail")
                return
            }

            do {
            let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
                print ("1")
              if let parseJSON = json {

                    let userId = parseJSON["userId"] as? String
                    print ("2")
                    if( userId != nil)
                    {
                        let myAlert = UIAlertController(title: "Alert", message: "Registration successful", preferredStyle: UIAlertControllerStyle.Alert);

                        let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default){(action) in

                            self.navigationController?.popViewControllerAnimated(true)                            }

                        myAlert.addAction(okAction);
                        self.presentViewController(myAlert, animated: true, completion: nil)
                    } else {
                        let errorMessage = parseJSON["message"] as? String
                        print ("3")
                        if(errorMessage != nil)
                        {
                            self.alertMessage(errorMessage!)
                        }

                    }

                }
            } catch{

                //email vergleich fehlt, egal ob
                print(error)
                print("catched error")

                let myAlert = UIAlertController(title: "Alert", message: "Registration successful", preferredStyle: UIAlertControllerStyle.Alert);

                let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default){(action) in


                    self.navigationController?.popViewControllerAnimated(true)
                }

                myAlert.addAction(okAction);
                self.presentViewController(myAlert, animated: true, completion: nil)


            }



        }

    }).resume()


}

谢谢您的帮助


问题答案:

您需要将content-type标头值设置为使用JSON。

request.addValue("application/json", forHTTPHeaderField: "Content-Type")

将代码更新为Swift 3,并删除了与请求无关的所有内容:

let myUrl = URL(string: "http://foodhelper.club/registerUser.php");
var request = URLRequest(url:myUrl!);
request.httpMethod = "POST";
request.addValue("application/json", forHTTPHeaderField: "Content-Type")

let postString = "userEmail=email&userFirstName=firstname&userLastName=lastname&userPassword=password";
request.httpBody = postString.data(using: String.Encoding.utf8);

URLSession.shared.dataTask(with: request, completionHandler: { (data:Data?, response:URLResponse?, error:Error?) -> Void in
        if error != nil {
            print("fail")
            return
        }

        do {
            let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
            print ("1")

            if let parseJSON = json {

                let userId = parseJSON["userId"] as? String
                print ("2")
                if( userId != nil) {

                } else {
                    let errorMessage = parseJSON["message"] as? String
                    print ("3")
                }
            }
        } catch{
            print(error)
        }
}).resume()


 类似资料:
  • 我正在学习JSON。我在从URL解析JSON时遇到问题。错误是“Error Domain=NSCocoaErrorDomain Code=3840”无值。“UserInfo={NSDebugDescription=无值。}” JSON是有效的-我已经检查过了。这是JSON的结构: 这是我的代码:导入UIKit }

  • 我正在尝试使用xcode中的Switf 4使用rest Web服务,这是我的代码: 这是我在xcode控制台中的回答: Linea 50:Error Domain=NSCocoaErrorDomain Code=3840“字符0周围的值无效。”UserInfo={NSDebugDescription=字符0周围无效的值。}Linea 52:可选(“|{\”login\“:\”true\“}”) 这

  • 问题内容: 我正在使用AFNetworking库通过POST方法在服务器上发布数据。 以下是我的代码 但是我得到以下错误响应 我不明白代码有什么问题。 问题答案: 问题来自响应解析。您正在尝试反序列化响应(必须包含在a 或中),但是您的响应不是以上所有(很可能是简单的字符串)。 另外,尝试将“允许片段”设置为响应序列化程序。

  • 我是iOS新手。我收到此错误: Error Domain=NSCoaErrorDomain Code=3840"字符0周围的值无效。"UserInfo={NSDebugDescription=字符0周围的值无效。}反序列化JSON时出错:Error Domain=NSCoaErrorDomain Code=3840"JSON文本没有以数组或对象开头,也没有设置允许片段的选项。"UserInfo={

  • 我想签名我的apk,所以我执行了以下命令: java-jar signapk.jar platform.x509.pem platform.pk8 app-debug.apk~/desktop/test.apk 但我得到了以下错误: (openjdk版本“1.8.0_141”openjdk运行时环境(build 1.8.0_141-8U141-B15-3~14.04-B15)openjdk 64位

  • 我试图转换图像与Imagemagick,但我得到这个错误: 转换:此图像格式没有解码委托'/tmp/magick-XXITXcTr'@宪法. c/ReadImage/503。 我正在这样做: 我有以下代表: 代表bzlib fontconfig freetype gs jpeg jng jp2 lcms openexr png rsvg tiff x11 xml wmf zlib 有人知道问题是什