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

Posted

技术标签:

【中文标题】错误域 = NSCocoaErrorDomain 代码 = 3840 “无值。” UserInfo=NSDebugDescription=无值。【英文标题】:Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo=NSDebugDescription=No value.错误域 = NSCocoaErrorDomain 代码 = 3840 “无值。” UserInfo=NSDebugDescription=无值。 【发布时间】:2018-04-04 02:37:42 【问题描述】:

该方法工作正常,它在后端执行我想要的操作,但我在控制台中收到以下错误:

错误域=NSCocoaErrorDomain 代码=3840 “没有值。” UserInfo=NSDebugDescription=无值。

上述错误在catch中被捕获。

我读出了建议为标题增加价值的类似问题,但也没有修复它。

let serverURL = URL(string: "https://xxx/xxx/xxx/xxx/xxx/email")
self.request = URLRequest(url:serverURL!)
self.request?.httpMethod = "POST"
self.request?.addValue("application/json", forHTTPHeaderField: "content-type")
self.request?.addValue("application/json", forHTTPHeaderField: "Accept")

 do 
      self.request?.httpBody = try JSONSerialization.data(withJSONObject: postContent, options: .prettyPrinted)
         catch let error 
            print(error.localizedDescription)
            return
  

json 格式如下:postContent: [String: String], ["email": "myemail@domain.com"]

任务代码:

let task = URLSession.shared.dataTask(with: request)  (data: Data?, response: URLResponse?, error: Error?) in

    if (self.activityIndicator != nil) 
        self.removeActivityIndicator(activityIndicator: self.activityIndicator!)
    

    guard let data = data else return

    do 
        let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String:String]

        if let parseJSON = json 
        self.alertMessage(message: "Please check your email for instructions.")
            
         else 
            self.alertMessage(message: "Invalid email address!")
        
     catch 
        self.alertMessage(message: "Could not send request. Try again!")
        print(error)
    

task.resume()

【问题讨论】:

【参考方案1】:

我认为你有一个拼写错误。你有没有尝试改变

self.request?.addValue("application/json", forHTTPHeaderField: "content-type")

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

【讨论】:

这不会做任何改变。 我在json上得到零了 @MaihanNijat :您是否尝试将您的 JSONSerialization.jsonObject(with: data, options: .mutableContainers) 更改为 JSONSerialization.jsonObject(with: data, options: []) 【参考方案2】:

我收到了200 OK 响应,但 json 正文返回为空:

let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String:String]

我修改了 API 并添加了响应正文以解决此问题。

【讨论】:

没有理由在 Swift 中使用.mutableContainers

以上是关于错误域 = NSCocoaErrorDomain 代码 = 3840 “无值。” UserInfo=NSDebugDescription=无值。的主要内容,如果未能解决你的问题,请参考以下文章

Json 错误:错误域 = NSCocoaErrorDomain 代码 = 3840“无值”。 UserInfo=NSDebugDescription=无值。

错误域 = NSCocoaErrorDomain 代码 = 3840 “字符周围的值无效

iOS swift 中的错误域 = NSCocoaErrorDomain 代码 = 3840?

iOS:- 错误:无法创建存储目录。错误域 = NSCocoaErrorDomain 代码 = 512

如何修复“错误域 = NSCocoaErrorDomain 代码 = 3840”无价值。“UserInfo = NSDebugDescription = 无价值。”

错误域=NSCocoaErrorDomain 代码=3840 JSONObject