1

数値を持つ文字列キーを持つように辞書を設定しようとしています(インクリメントする必要があります。

これは、値1で初期化する方法です。

[person.list setObject:[NSNumber numberWithInteger:1] forKey:name];

必要に応じて値を増やすにはどうすればよいですか?

4

6 に答える 6

0

まず、person.listが のインスタンスであることを確認しますNSMutableDictionary。(また、person の list プロパティを別の名前に変更することもできます。List は、Dictionary ではなく配列のような構造を意味します。)

新しい NSDictionary 構文とプリミティブからオブジェクトへのボックス化を使用できます。ここでは、数値は符号なし整数であると想定しています。

person.list[name] = @([person.list[name] unsignedIntegerValue] + 1);

これは構文的に似ています (読みやすくするために複数の行に分割されています)

NSUInteger previous = [[person.list objectForKey:name] unsignedIntegerValue];
NSNumber *incremented = [NSNumber numberWithUnsignedInteger:previous + 1];
[person.list setObject:incremented forKey:name];

この@(...)構文は、プリミティブ番号を NSNumber オブジェクトに変換します。[name]構文は of の省略形ですsetObject:forKey:NSMutableDictionary

于 2013-04-30T05:03:42.527 に答える
0
    NSNumber *num = [person.list objectForKey:name];
    if(!num) [person.list setObject:[NSNumber numberWithInteger:1] forKey:name];
    else [person.list setObject:[NSNumber numberWithInteger:([num intValue]+1)] forKey:name];
于 2013-04-30T04:56:25.337 に答える
0

シーケンシャル インクリメントがあれば、static integer役に立ちます!

static int increment = 1;

[person.list setObject:[NSNumber numberWithInteger:increment++] forKey:name];

static変数がわからない場合は、この質問が役立ちます。

于 2013-04-30T04:45:22.500 に答える
0

あなたが達成しようとしていることはよくわかりませんが、1つの解決策は

[person.list setObject:[NSNumber numberWithInteger:person.list.count+1] forKey:name];
于 2013-04-30T04:46:10.330 に答える