NSPredicates可以用来用字典中的值替换数组中的对象吗?

时间:2012-01-14 00:09:07

标签: ios nsarray nsdictionary nspredicate fast-enumeration

如果我有这样的NSDictionary:

NSMutableDictionary *valuesDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithDouble:-60.0],@”a”,
[NSNumber numberWithDouble:0.0],@”b”,
[NSNumber numberWithDouble:-12.0],@”c”,
[NSNumber numberWithDouble:.3],@”x”, nil];

和这样的数组:

NSArray *program = [NSArray arrayWithObjects: @"a",@"12.6",@"100",@"+",@"x",nil];

返回数组programWithVariableValues的代码是什么样的,例如,包含@“ - 60”,@“12.6”,@“100”,@“+”,@“。3”,nil?< / p>

(用数值键替换数组中找到的任何变量)

这是一个利用NSPredicate的好地方吗?还是只是快速枚举?或其他什么?

1 个答案:

答案 0 :(得分:1)

可能有一个使用谓词和/或valueForKeyPath运算符的聪明的单行解决方案,但是直到有人想出那个,这应该可以解决问题:

NSMutableArray *programWithVariableValues = [NSMutableArray array];
for (NSString *key in program)
{
    [programWithVariableValues addObject:[[valuesDictionary objectForKey:key] description] ?: key];
}

programWithVariableValues数组现在包含您的值(作为字符串)。如果您希望将数字保留为NSNumbers,请取出“[... description]”电话。

相关问题