我有一个名为allQuestions的NSArray,其对象具有名为isCorrect的BOOL属性
我试过
int res = [self.allQuestions valueForKeyPath:@"@sum.isCorrect"];
但这总是给我一个虚假号码。我虽然YES会计为1,NO会计为0.我在这里缺少什么。是否无法保证价值观?如果不是,那么在不迭代数组的情况下实现这个简单事情的最佳方法是什么?
编辑:准确一点:我对评估为YES的元素的数量(数量)感兴趣。
答案 0 :(得分:2)
int res = [[self.allQuestions valueForKeyPath:@"@sum.isCorrect"] intValue];
valueForKeyPath返回NSNumber的对象。您需要将其转换为原始类型int或在NSNumber处使用指针。
答案 1 :(得分:0)
添加到数组时,应该将布尔值包装在NSNumber中:
BOOL b = YES;
[self.allQuestions addObject:[NSNumber numberWithBool:b]];
以同样的方式检索:
BOOL b = [[self.allQuestions valueForKeyPath:@"@sum.isCorrect"] boolValue];
答案 2 :(得分:0)
解决:
NSNumber * res = [self.allQuestions valueForKeyPath:@"@sum.isCorrect"];
它返回一个NSNumber,当然......