let params = ["first":"string", "second":["any":""]] as [String: Any]
let serverUrl = URL(string: "https://example.execute-api.ap-southeast-2.amazonaws.com/prod")!
var request = URLRequest(url:serverUrl)
request.httpMethod = "POST"
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("secret", forHTTPHeaderField: "X-Api-Key")
do {
request.httpBody = try JSONSerialization.data(withJSONObject: params, options: [])
} catch _ as NSError {
return
}
这在第8行新的ios模拟器崩溃,但再次尝试时。我测试了不同的假设,但似乎无法找出原因。JSONSerialization仅在新鲜的ios模拟器上崩溃
我测试:
- isValidJsonObject()
- 混合嵌套字典
- 空字符串
- 字典 '<' 字符串,任意> VS [字符串:任何]
崩溃错误消息是'线程1:EXC_BAD_ACCESS(code = EXC_i386_GPFLT)'。我已经检查过线程是否有任何错误,但是我的大中央调度似乎以正确的顺序输出正确的数据。
任何线索?
这个问题只限于模拟器,还是会出现在物理ipad中?
编辑:进一步的谷歌搜索建议这是空字符串有助于返回零的问题。我可以强制空字符串为空值,但是我仍然困扰于上述代码只在新的模拟器中崩溃的事实,但完美地工作后。
你想传递什么你第二个参数? –
嗨,我编辑修复了这个错误,并在完成请求的其余部分添加了。然而,我的测试表明,这是params字典崩溃了JSONSerialization函数。 – yks