@(YES)和YES?@1:@0区别何在?

后台人员提供了一个网络请求接口,接口文档如下:

接口文档.png

使用字典将参数传递过来给后台,移动端提供的参数isAttentionBOOL类型,要转换成后台所需要的int类型;
因为字典之中键值只能是对象类型,以往都是将int类型包装成NSNumber类型放在字典里进行传递,请求准确无误。

方式一    :   {@"isAttention":@(isAttention)}
方式二    :   [NSNumber numberWithBool:attention]
方式三    :   attention ? @1 : @0

不巧的是,今天使用上述两种方式都报错--400.

Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set., NSUnderlyingError=0x604000c51100 {Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo={NSLocalizedDescription=Request failed: bad request (400), NSErrorFailingURLKey=http://test.******.com/jsb_webserver/attention/user, com.alamofire.serialization.response.error.data = <........>, com.alamofire.serialization.response.error.response= { URL: http://test.******.com/jsb_webserver/attention/user } { Status Code: 400, Headers { Connection = [ close ], Content-Language = [ en ], Content-Type = [ text/html;charset=utf-8 ], Content-Length = [ 1003 ], Date = [ Mon, 03 Sep 2018 06:34:01 GMT ] } }}}}
最终使用第三种方式包装BOOL类型参数,请求成功的!!!
但是本人还是有些不解,前两种写法和第三种有什么本质上的区别,
求大神不吝赐教!!!

你可能感兴趣的:(@(YES)和YES?@1:@0区别何在?)