- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我通过字典时@{@"MUTE":@(flag)}
至+[NSJSONSerialization dataWithJSONObject:options:error:]
,它返回一个像 { "MUTE" : true }
这样的 JSON ,这是我所期望的。
但是当我把我的字典改成 @{@"MUTE":@(!flag)}
,它会生成这样的 JSON { "MUTE" : 0 }
,这是我们的服务器不能接受的。
所以我写了一些测试代码来看看这里发生了什么:
BOOL var = YES;
NSLog(@"%@", [@(var) class]); // print __NSCFBoolean
NSLog(@"%@", [@(!var) class]); // print __NSCFNumber
NSLog(@"%@", [@((BOOL)!var) class]);// print __NSCFBoolean
BOOL var = ((bool)1);
NSLog((NSString *)&__NSConstantStringImpl__var_folders_vg_0k7tkth9043fl0g9sf5l9l3w0000gn_T_main_8479d3_mi_0, ((Class (*)(id, SEL))(void *)objc_msgSend)((id)((NSNumber *(*)(Class, SEL, BOOL))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithBool:"), (BOOL)(var)), sel_registerName("class")));
NSLog((NSString *)&__NSConstantStringImpl__var_folders_vg_0k7tkth9043fl0g9sf5l9l3w0000gn_T_main_8479d3_mi_1, ((Class (*)(id, SEL))(void *)objc_msgSend)((id)((NSNumber *(*)(Class, SEL, BOOL))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithBool:"), (BOOL)(!var)), sel_registerName("class")));
NSLog((NSString *)&__NSConstantStringImpl__var_folders_vg_0k7tkth9043fl0g9sf5l9l3w0000gn_T_main_8479d3_mi_2, ((Class (*)(id, SEL))(void *)objc_msgSend)((id)((NSNumber *(*)(Class, SEL, BOOL))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithBool:"), ((BOOL)!var)), sel_registerName("class")));
@(!var)
中出了什么问题?
最佳答案
这是Objective-C的C部分。 C 逻辑运算符,例如 &&
, ||
和 !
都将其操作数与(不)等于 0 进行比较并返回 int
值 0 或 1。这源于 C 最初没有任何内置的 bool 类型。
所以在你的表达中@(!var)
!var
有类型 int
和 __NSCFNumber
对象被创建。
高温高压
关于ios - 为什么 [@(!var) class] 返回'__NSCFNumber'而不是'__NSCFBoolean'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49962494/
我正在运行评估函数来运行 javascript。但是,它在其中运行另一个 javascript 代码,因此我需要等待一段时间才能获得原始结果。直到原始结果,它返回一个数字。我可以等待结果,但我需要检查
所以我是 Objective-c 编程的新手。我想使用 HTTP POST 方法发出请求。我发送的参数是 int 类型。 我收到这个错误: [__NSCFNumber stringByAddingPe
我遇到了这个崩溃,但是,在我的代码中我使用了一个字符串。我已经在这段代码上工作了 2 个小时,但我看不出我遗漏了什么!有什么想法吗? NSString *codeR = [NSString stri
首先,对不起我的英语,这不是我的母语:) 我遇到了这个崩溃 "Terminating app due to uncaught exception 'NSInvalidArgumentException
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"todo_catego
在将我的 Mac OS 和 Xcode 从 7 更新到 11.1 并将 Swift 2.2 更新到 Swift 4 后,我在查询 Stored in aWords: String 中收到标题错误:以前
为什么不能将 NSCFNumber(核心数据)转换为 NSArray? 错误: Could not cast value of type '__NSCFNumber' (XXXXXXXX) to 'N
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我在 Parse.com 上设置了一个数据库,其中一列的类型为 Number。当我从 Parse 中提取数据时,出现无法将 __NSCFNumber 转换为 Int32 的错误。 var index
我正在尝试在用户接受位置共享后显示 View 。这是代码: -(void) locationManager:(CLLocationManager *)manager didChangeAuthoriz
我正在尝试将数据从 TableView Controller 传递到详细 View Controller 。我的表中的每个条目都可以正常工作,除了一个。 这是 prepareForSegue 方法:
我创建了一个自定义单元格并在其上放置了按钮和按钮事件是这样的 [cell.BtnRequest addTarget:self action:@selector(didTapButton:) fo
我已经检查了其他答案,但他们似乎没有正确回答我的问题。如果有明显的我没见过的,请帮我把它放在评论中:) 我有一个 tableView,它有一个 Realm 数据库作为数据源。我希望能够从源中删除已删除
我正在从我的 Firebase 数据库 (JSON db) 中检索一个数字值,然后将这个数字显示到一个 textField 中,尽管我在尝试显示它时遇到了这个错误。 Could not cast va
-(FileGame *)objectAtXandY:(int) posX secondPos:(int)posY { if (posX = kBoxWidth || posY = kBoxH
我通过键(对象)访问字典,大部分时间工作正常,但有时它会崩溃: -[__NSCFNumber objectForKey:]: unrecognized selector sent to instanc
我正在使用 CLLocationmanager 从 app delegate 获取纬度和经度通过使用以下代码: class AppDelegate: UIResponder, UIApplicat
这个错误意味着什么? [__NSCFNumber length]: unrecognized selector sent to instance 0x6d21350 这是我的代码: NSStr
我遇到了一个错误 [__NSCFNumber length]: unrecognized selector sent to instance 0x15580c90 2014-02-18 15:10:4
我有一位用户声称我的 Core Data 应用程序不会在他的 Mac 上保存数据。即使使用完全相同的配置,我也无法重现该问题。 我可以获得的所有信息是我的应用程序记录到用户控制台的消息(见下文)。也许
我是一名优秀的程序员,十分优秀!