3

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

我试过了

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

但这总是给我一个虚假的号码。我虽然 YES 算作 1,而 NO 算作 0。我在这里错过了什么。没有价值保证吗?如果不是,那么在不迭代数组的情况下实现这个简单事情的最佳方法是什么?

编辑:准确地说:我对评估为“是”的元素的计数(数量)感兴趣。

4

3 回答 3

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

valueForKeyPath 返回 NSNumber 的对象。您需要将其转换为原始类型 int 或在 NSNumber 处使用指针。

于 2013-11-01T08:58:55.007 回答
0

解决了:

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

它返回一个 NSNumber,当然......

于 2013-11-01T09:00:58.530 回答
0

添加到数组时,您应该将布尔值包装在 NSNumber 中:

BOOL b = YES;

[self.allQuestions addObject:[NSNumber numberWithBool:b]]; 

并以相同的方式检索:

 BOOL b = [[self.allQuestions valueForKeyPath:@"@sum.isCorrect"] boolValue];
于 2013-11-01T08:40:08.527 回答