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];

たとえば、@” -60”、@” 12.6”、@” 100”、@ "+"、@”。3”、nilで構成される配列programWithVariableValuesを返すコードはどのようになりますか?

(配列内で見つかった変数をそれらの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 として保持したい場合は、"[... description]" 呼び出しを取り出します。

于 2012-01-14T00:30:02.943 に答える