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
}
これは、新しくiosシミュレータで行8でクラッシュしますが、再試行しても機能します。私はさまざまな仮説をテストしましたが、その理由を見つけることはできません。私がテストしてみた新しくiosシミュレータでJSONシリアル化クラッシュが発生する
:
- isValidJsonObject()
- 混合ネストされた辞書
- 空の文字列
- 辞書 'を<' 文字列を、任意> [文字列:任意]対
クラッシュエラーメッセージは「スレッド1:EXC_BAD_ACCESS(コード= EXC_i386_GPFLT)」です。私はスレッディングに間違いがあるかどうか確認しましたが、巨大なセントラルディスパッチが正しいデータを正しい順序で出力しているようです。
手がかりはありますか?
この問題はシミュレータにのみ限定されますか、それとも物理的なipadにも表示されますか?
編集:さらにグーグルは、空の文字列が何らかの原因でnilを返すことに問題があることを示唆しています。空の文字列を強制的にnull値にすることはできますが、上記のコードは新鮮なシミュレータでのみクラッシュしますが、後は問題なく動作します。
あなたに渡したいものをたとえば、あなたがこれを行うことができます2番目のパラメータ? –
こんにちは、私は間違いを修正するために編集し、完了のために残りのリクエストを追加しました。私のテストでは、JSONSerialization関数がクラッシュするのはparams dictであることがわかりました。 – yks