Printing description of self->data:
{
root = {
participant = (
{
age = {
text = "\n 27";
};
class = {
text = "\n M 25-29";
};
gender = {
text = "\n M";
};
},
{
age = {
text = "\n 27";
};
class = {
text = "\n M 25-29";
};
gender = {
text = "\n M";
};
},
{
age = {
text = "\n 29";
};
class = {
text = "\n M 25-29";
};
gender = {
text = "\n M";
};
},
有一个我的数据的例子。真实记录是913项,包括男性和女性参与者。我如何将一个字典简化为男性或女性?
我试过了valueForKeyPath:@"root.participant.gender.text==M"
,但事实并非如此。我特别想分别了解男性和女性的class
,以防有更好的方法。
答案 0 :(得分:1)
您应该使用[[self valueForKeyPath:@"root.participant.gender.text"] isEqualToString:@"\n M"
(引号不包含整个表达式并使用-isEqualToString:
而不是valueForKeyPath:@"root.participant.gender.text==M"
。
答案 1 :(得分:0)
没有任何工作,所以我最终选择了这个
NSArray *participants = [self.data valueForKeyPath:@"root.participant"];
NSMutableArray *men = [[NSMutableArray alloc] init];
NSMutableArray *women = [[NSMutableArray alloc] init];
for(NSDictionary *p in participants) {
NSString *t = [XMLReader cleanString:[p valueForKeyPath:@"chiptime.text"]];
NSNumber *m = [NSNumber numberWithFloat:[self timeToMinutes:t]];
if([[XMLReader cleanString:[p valueForKeyPath:@"gender.text"]] isEqualToString:@"M"]) {
[men addObject:m];
} else {
[women addObject:m];
}
}
XMLReader cleanString
只取出\n\s*
垃圾。