【问题标题】: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()

【问题讨论】:

    标签: ios swift swift4


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多