1

如果我有这样的 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 组成?

(用它们的 valueforkey 替换在数组中找到的任何变量)

那是使用 NSPredicate 的好地方吗?还是只是快速枚举?或者是其他东西?

4

1 回答 1

1

可能有一个使用谓词和/或 valueForKeyPath 运算符的巧妙的单线解决方案,但在有人弄清楚这一点之前,这应该可以解决问题:

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

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

于 2012-01-14T00:30:02.943 回答