数値を持つ文字列キーを持つように辞書を設定しようとしています(インクリメントする必要があります。
これは、値1で初期化する方法です。
[person.list setObject:[NSNumber numberWithInteger:1] forKey:name];
必要に応じて値を増やすにはどうすればよいですか?
数値を持つ文字列キーを持つように辞書を設定しようとしています(インクリメントする必要があります。
これは、値1で初期化する方法です。
[person.list setObject:[NSNumber numberWithInteger:1] forKey:name];
必要に応じて値を増やすにはどうすればよいですか?
まず、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
。
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];
シーケンシャル インクリメントがあれば、static
integer
役に立ちます!
static int increment = 1;
[person.list setObject:[NSNumber numberWithInteger:increment++] forKey:name];
static
変数がわからない場合は、この質問が役立ちます。
あなたが達成しようとしていることはよくわかりませんが、1つの解決策は
[person.list setObject:[NSNumber numberWithInteger:person.list.count+1] forKey:name];