นี่คือสิ่งที่ฉันพบว่าเป็นปัญหาของฉัน: ฉันเรียก Alamofire ผ่านฟังก์ชันเพื่อตรวจสอบสิทธิ์ผู้ใช้: ฉันใช้ฟังก์ชัน "ผู้ใช้เข้าสู่ระบบ" ด้วยพารามิเตอร์ที่จะเรียกจาก "body" (อีเมล: String, password: String) ที่จะผ่านไป
ข้อผิดพลาดของฉันคือ:
ทางเลือก (alamofire.aferror.responseserializationfailed (alamofire.aferror.responseserializationfailurereason.jsonserializationfailed (error domain = nscocoaerrordomain code = 3840 "ไม่ถูกต้องรอบอักขระ 0" userinfo = {nsdebugdescription = ค่าไม่ถูกต้องรอบอักขระ 0
อักขระ 0 เป็นกุญแจสำคัญที่นี่หมายถึงการเรียก "อีเมล" ไม่ตรงกับพารามิเตอร์: ดูรหัสด้านล่าง
func loginUser (อีเมล: สตริงรหัสผ่าน: สตริงเสร็จสิ้น: @escaping downloadComplete) {let lowerCasedEmail = email.lowercased ()
let header = [
"Content-Type" : "application/json; charset=utf-8"
]
let body: [String: Any] = [
"email": lowerCasedEmail,
"password": password
]
Alamofire.request(LOGIN_USER, method: .post, parameters: body, encoding: JSONEncoding.default, headers: header).responseJSON { (response) in
if response.result.error == nil {
if let data = response.result.value as? Dictionary<String, AnyObject> {
if let email = data["user"] as? String {
self.userEmail = email
print(self.userEmail)
}
if let token = data["token"] as? String {
self.token_Key = token
print(self.token_Key)
}
"email" ในพารามิเตอร์ฟังก์ชันต้องตรงกับ let "email" เมื่อแยกวิเคราะห์แล้วจึงจะทำงานได้ .. ฉันไม่ได้รับข้อผิดพลาดอีกต่อไป ... และอักขระ 0 คือ "email" ในพารามิเตอร์ "body" สำหรับคำขอ Alamofire:
หวังว่านี่จะช่วยได้
responseJSON() { ... }
.responseString { _, _, s, _ in println(s) }
ที่ช่วยให้คุณเห็น json ที่ถูกส่งกลับเพื่อค้นหาข้อความแปลก ๆ ที่จะทำให้ไม่สามารถแยกวิเคราะห์ได้ภายในresponseJSON