由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'JSON 中的无效类型写入 (NSConcreteValue)
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (NSConcreteValue)
这是我的词典:
{ @"RoutePolyline":<__NSArrayM 0x283983750>(<c59272f7 39263940 55a4c2d8 42f65240>),
@"RideID":6565
};
我在 API 调用中将此词典作为参数发送。
我的应用程序在这行代码处崩溃:
NSData *postData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
这是它抛出的错误:
Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: 'Invalid type in JSON write
(NSConcreteValue)'
我知道 RoutePolyline 参数持有一个 NSValue(它应该是一个坐标数组)而不是任何对象类型,但我尝试了很多转换,但到目前为止没有任何效果。例如
[NSValue valueWithMKCoordinate:*routeCoordinates]
遍历 NSValue
数组并提取 CLLocationCoordinate2D
的值。
for (NSValue *value in coordinates) {
CLLocationCoordinate2D coordinate;
[value getValue:&coordinate];
NSDictionary *coDic = @{@"latitude" : [NSNumber numberWithDouble: coordinate.latitude],
@"longitude": [NSNumber numberWithDouble: coordinate.longitude]};
[array addObject:coDic];
}
同时在序列化之前检查字典是否有效JSON
if ([NSJSONSerialization isValidJSONObject:dic]) {
NSData *postData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
}
先获取坐标(lat longs)值并存储到数组中,然后可以序列化,它应该不会崩溃。尝试在 api:
中使用 NSString
值
NSArray *arr = @[ @{@“lat”: [NSString stringWithFormat:@"%ld",routeCoordinates.latitude],
@“long”:[NSString stringWithFormat:@"%ld",routeCoordinates.longitude]
}];
这是我的词典:
{ @"RoutePolyline":<__NSArrayM 0x283983750>(<c59272f7 39263940 55a4c2d8 42f65240>),
@"RideID":6565
};
我在 API 调用中将此词典作为参数发送。
我的应用程序在这行代码处崩溃:
NSData *postData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
这是它抛出的错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (NSConcreteValue)'
我知道 RoutePolyline 参数持有一个 NSValue(它应该是一个坐标数组)而不是任何对象类型,但我尝试了很多转换,但到目前为止没有任何效果。例如
[NSValue valueWithMKCoordinate:*routeCoordinates]
遍历 NSValue
数组并提取 CLLocationCoordinate2D
的值。
for (NSValue *value in coordinates) {
CLLocationCoordinate2D coordinate;
[value getValue:&coordinate];
NSDictionary *coDic = @{@"latitude" : [NSNumber numberWithDouble: coordinate.latitude],
@"longitude": [NSNumber numberWithDouble: coordinate.longitude]};
[array addObject:coDic];
}
同时在序列化之前检查字典是否有效JSON
if ([NSJSONSerialization isValidJSONObject:dic]) {
NSData *postData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
}
先获取坐标(lat longs)值并存储到数组中,然后可以序列化,它应该不会崩溃。尝试在 api:
中使用NSString
值
NSArray *arr = @[ @{@“lat”: [NSString stringWithFormat:@"%ld",routeCoordinates.latitude],
@“long”:[NSString stringWithFormat:@"%ld",routeCoordinates.longitude]
}];