ios - iOS:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“JSON写入(_NSInlineData)中的类型无效”

标签 ios json nsurlsession

NSData *imgData;
if (!_groupImageView.image)
{
    imgData=[NSData dataWithData:UIImagePNGRepresentation([UIImage imageNamed:@"Replay.png"])];
}
else
{
    imgData=[NSData dataWithData:UIImagePNGRepresentation(_groupImageView.image)];
}
NSError *error;
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
NSURL* url = [NSURL URLWithString:[ NSString stringWithFormat:@"%@groups/create",[sharedObj getSiteUrl]]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:60.0];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setHTTPMethod:@"POST"];
NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys:sharedObj.acessToken, @"tocken",  _txtGroupName.text, @"name",imgData, @"image",  nil];
NSData *postData = [NSJSONSerialization dataWithJSONObject:mapData options:0 error:&error];
[request setHTTPBody:postData];

当我尝试对图像数据进行JSON编码时,出现此异常,

由于未捕获的异常而终止应用程序
'NSInvalidArgumentException',原因:'JSON写入中的类型无效
(_NSInlineData)'

最佳答案

或者使用base64EncodedString将imgData更改为字符串;

NSData *imgData;
if (!_groupImageView.image)
{
    imgData=[NSData dataWithData:UIImagePNGRepresentation([UIImage imageNamed:@"Replay.png"])];
}
else
{
    imgData=[NSData dataWithData:UIImagePNGRepresentation(_groupImageView.image)];
}

//将图像数据更改为base64EncodedString
NSString *base64=[imgData base64EncodedStringWithOptions:0];
NSError *error;
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
NSURL* url = [NSURL URLWithString:[ NSString stringWithFormat:@"%@groups/create",[sharedObj getSiteUrl]]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:60.0];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setHTTPMethod:@"POST"];

//将base64添加为键“image”的值
NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys:sharedObj.acessToken, @"tocken",  _txtGroupName.text, @"name",base64, @"image",  nil];
NSData *postData = [NSJSONSerialization dataWithJSONObject:mapData options:0 error:&error];
[request setHTTPBody:postData];

关于ios - iOS:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“JSON写入(_NSInlineData)中的类型无效”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984098/

相关文章:

ios - 由 base64encodeString 组成的 NSMutableRequest 正文在作为字符串发送时被截断

ios - 我有 4 个不同的 xcode 项目。我想从一个项目调用不同项目的 viewcontroller。我该怎么做

ios - EAGLContext_presentRenderBuffer 在 OpenGLES 压力测试中占用了大部分时间

json - 向 Golang API 发送请求以发送 JSON 和字符串化 JSON

json - 如何在 React Native 中将 this.props.key 设置到 Firebase 数据库引用中

ios - 多个文件下载有问题

ios - 什么是 extension_access_modifier swiftlint?

ios - 如何在 UIScrollView 中使用 UIGestureRecognizer

json - 在 Swift 中解析 Gravatar 配置文件 JSON

ios - 使用参数发出 nsurlsession 请求