gpt4 book ai didi

ios - Swift 中的 JSON 写入 (NSConcreteMutableData) 类型无效

转载 作者:行者123 更新时间:2023-11-29 01:09:50 26 4
gpt4 key购买 nike

我调用 Rest API 是为了调用我有一些参数作为字典格式并在某些时候传递给 api,我在转换子类型时崩溃了

这里是我的示例代码:

    let configuration = NSURLSessionConfiguration .defaultSessionConfiguration()
let session = NSURLSession(configuration: configuration)

self.profieImage = UIImage(named: "calendar.png")

let imageData = UIImageJPEGRepresentation(self.profieImage, 1)

let params = ["fname":"Martin","lname":"Raj","gender":"Male","dob":"1997-9-14","email":"xx@gmail.com","mobileNumber":"00000","pancard":"vvvv","profileImg":imageData!] as Dictionary!

let urlString = NSString(format:"http://my.api.call");
print("url string is \(urlString)")
let request : NSMutableURLRequest = NSMutableURLRequest()
request.URL = NSURL(string: NSString(format: "%@", urlString)as String)
request.HTTPMethod = "POST"
request.timeoutInterval = 30
request.addValue("mobile", forHTTPHeaderField: "true")
request.addValue("token", forHTTPHeaderField: "")
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(params, options: [])



let dataTask = session.dataTaskWithRequest(request)
{
(let data: NSData?, let response: NSURLResponse?, let error: NSError?) -> Void in
// 1: Check HTTP Response for successful GET request
guard let httpResponse = response as? NSHTTPURLResponse, receivedData = data
else {
print("error: not a valid http response")
return
}

switch (httpResponse.statusCode){
case 200:
let response = NSString (data: receivedData, encoding: NSUTF8StringEncoding)

print("response==\(response)")

default:
break
}
}

我的日志打印了这条语句:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (NSConcreteMutableData)'

最佳答案

错误信息很清楚:

不支持 JSON 格式的

NSData

例如,您可以将数据转换为 Base-64 编码字符串

let imageDataBase64 = imageData!.base64EncodedStringWithOptions([])
let params = ["fname":"Martin","lname":"Raj","gender":"Male","dob":"1997-9-14","email":"xx@gmail.com","mobileNumber":"00000","pancard":"vvvv","profileImg":imageDataBase64]

在服务器端,您需要将字符串解码回 NSData

params 是一个非可选字典(编译器可以推断出这一点),类型转换为隐式解包 Dictionary 是没有意义的,也不需要。

关于ios - Swift 中的 JSON 写入 (NSConcreteMutableData) 类型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35888306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com