gpt4 book ai didi

objective-c - if 语句比较整数在 objective-c 中不起作用

转载 作者:行者123 更新时间:2023-12-02 22:35:41 26 4
gpt4 key购买 nike

我正在尝试根据两个整数的值执行逻辑。在这里我定义了我的整数,我也有 NSLog 以便我可以在运行代码时查看值是否正确:

int theHikeFlag = (int)[theNewHikeFlag objectAtIndex:(theID-1)];
NSLog(@"theHikeFlag: %@",theHikeFlag);
int fromTheDB = [self.detailItem hikeFlag];
NSLog(@"fromTheDB: %d",fromTheDB);

逻辑是这样的:

if (theHikeFlag==1) {
hikeString=@"You have";
}
else if (theHikeFlag==0) {
hikeString=@"You have not";
}
else {
if (fromTheDB==1) {
hikeString=@"You have";
}
else {
hikeString=@"You have not";
}
}

作为此代码如何工作的示例。当 theHikeFlag=1fromTheDB=0 时,代码绕过 if 和 else if 直接进入 else 并设置 hikeString="You have not"。这意味着我的结果与 theHikeFlag 无关,并且基于 fromTheDB 整数。

最佳答案

因为你不能在数组中存储int,行

(int)[theNewHikeFlag objectAtIndex:(theID-1)];

没有按照您的想法去做。您需要从 NSNumber 中提取数据,而不是转换为 int

int theHikeFlag = [[theNewHikeFlag objectAtIndex:(theID-1)] intValue];

日志输出正确的原因有点搞笑:你连续错了两次!首先,您将指针重新解释为 int,然后通过添加格式说明符 %@< 让 NSLog 再次将其重新解释为对象int 不兼容,但可以很好地处理指针!由于 int 值包含指向 NSNumber 的指针,因此 NSLog 会产生“正确”的输出。

关于objective-c - if 语句比较整数在 objective-c 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11471655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com