在NSArray上使用valueForKeyPath,如果property设置为YES,如何计算BOOL属性

时间:2013-11-01 08:37:32

标签: objective-c cocoa

我有一个名为allQuestions的NSArray,其对象具有名为isCorrect的BOOL属性

我试过

int res = [self.allQuestions valueForKeyPath:@"@sum.isCorrect"];

但这总是给我一个虚假号码。我虽然YES会计为1,NO会计为0.我在这里缺少什么。是否无法保证价值观?如果不是,那么在不迭代数组的情况下实现这个简单事情的最佳方法是什么?

编辑:准确一点:我对评估为YES的元素的数量(数量)感兴趣。

3 个答案:

答案 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,当然......

相关问题