如何解决为什么这个简单的\'if\'语句不起作用在快速枚举中?
| 我通过表中的ChecklistItem
实体进行枚举,以查看哪个具有priority
(NSNumber属性)为1的实体。checklistItems
与Checklist
有很多关系。
在这个简单的代码中,第一个NSLog可以正常工作,并报告我的几个ChecklistItem的优先级为1。但是第二个NSLog从未被调用。为什么是这样?我假设我错误地将“ if”语句置为错误,但是我不知道该怎么做。
for (ChecklistItem *eachItem in checklist.checklistItems){
NSLog(@\"Going through loop. Item %@ has priority %@.\",eachItem.name,eachItem.priority);
if (eachItem.priority == [NSNumber numberWithInt:1]) {
NSLog(@\"Item %@ has priority 1\",eachItem.name);
}
}
解决方法
您不能像上面那样比较对象。使用以下代码。
for (ChecklistItem *eachItem in checklist.checklistItems){
NSLog(@\"Going through loop. Item %@ has priority %@.\",eachItem.name,eachItem.priority);
if ([eachItem.priority intValue]== 1) {
NSLog(@\"Item %@ has priority 1\",eachItem.name);
}
}
谢谢,
,您正在比较返回值eachItem.priority
和[NSNumber numberWithInt:1]
的指针。您应使用ѭ8的相等方法。
,好吧,您应该检查像这样的值相等性:
if ( [eachItem.priority intValue] == 1 ) { ... }
但是,我很惊讶它并不会按原样工作,因为我认为NSNumber
汇集了一些基本实例,我希望1是其中之一。即使在这种情况下,依靠它也将是非常糟糕的形式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。