【问题标题】:iOS:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (_NSInlineData)'iOS:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“JSON 写入 (_NSInlineData) 中的类型无效”
【发布时间】:2014-09-18 23:35:08
【问题描述】:
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)'

【问题讨论】:

  • 您有问题吗?
  • (访问 json.org 并学习 JSON 语法。只需 5-10 分钟。当你在那里时,请注意没有对应于 NSData 对象的 JSON 实体。)

标签: ios json nsurlsession


【解决方案1】:

或者通过使用 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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2013-04-27
    • 2021-09-17
    • 2012-07-12
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多