当前位置: 首页 > 知识库问答 >
问题:

iOS:由于未捕获异常终止应用程序NSInvalidArgumentExc0019,原因:无效类型在JSON写(_NSInlineData)

陈马鲁
2023-03-14
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写入中的类型无效(\u NSInlineData)”

共有1个答案

管炳
2023-03-14

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

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

//将图像数据更改为bas64EncodedString

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"];

//添加bas64作为键"图像"的值

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];
 类似资料:
  • 我有一个简单的Spring云kafka流应用程序。每次有异常时,应用程序都会终止,我无法覆盖此行为。当有某些类型的异常时,所需的结果是增量退回,或者继续其他类型的异常。我使用和 application.yaml 豆子 事件处理器 继续错误处理程序

  • 问题内容: 我正在与一个应用程序一起工作,该应用程序从XML Schema生成表单(使用JAXFront库),并将用户填写的数据存储到XML文档中。 我在需要时放置了try-catch-finally块,但是在主线程结束时(AWT线程仍在运行)捕获异常时我有一个小问题。 我有两个班级负责主要工作,其他班级对这个问题并不重要: 主类 :具有以下结构。初始化应用程序并运行主机 } 框架类 :生成视图和

  • 我想使用sentry跟踪spring boot应用程序的异常。Sentry不会自动捕获异常。但是当我使用

  • 找不到指定的模型:User\u model Filename:/opt/lampp/htdocs/ci/system/core/Loader。php 电话号码:348 回溯: 文件:/opt/lampp/htdocs/ci/index。php行:315函数:需要一次 我试图改变名称,但它不工作......这个代码模型

  • 我将我的文件夹(myApp)复制到Tomcat8的webapps文件夹中。 然后我转到“Tomcat Web Application Manager”&在那里看到“/myApp”running=false。然后单击Start&发现了以下错误: 注意:这是myApp的web.xml Catalina.2014-05-09.log:

  • ...有点。正如这个极其简单的例子所示, 我的一个应用程序很少以这种方式崩溃(到目前为止只报告过一次)。当一个不确定的异常发生时,我想像往常一样终止它。我的策略是(低级)记录问题,然后终止。应用程序是子系统的一部分,如果检测到任何问题,我想(重新)启动它。它是用C -Builder 6构建的,在Windows (XP)上运行...7,也是8)。我了解到< code>abort()很可能导致了这个错