我正在通过表格中的ChecklistItem
个实体进行枚举,以查看哪些实体的priority
(NSNumber属性)为1. checklistItems
与{Checklist
处于多对多关系1}}。
在这个简单的代码中,第一个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);
}
}
答案 0 :(得分:3)
您正在比较eachItem.priority
和[NSNumber numberWithInt:1]
的返回值的指针。你应该使用NSNumber
的平等方法。
答案 1 :(得分:2)
您无法像上面那样比较对象。使用以下代码。
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);
}
}
谢谢,
答案 2 :(得分:1)
好吧,你应该检查这样的值相等:
if ( [eachItem.priority intValue] == 1 ) { ... }
然而,我有点惊讶它没有意外地工作,因为我认为NSNumber
汇集了几个基本实例,我希望1是一个他们然而,依靠这将是非常糟糕的形式,即使它恰好在这种情况下起作用。