13

私が理解しているように、Objective-Cではオブジェクトを辞書に入れることしかできません。したがって、辞書を作成する場合は、すべてのオブジェクトが必要になります。これは、自分のintをNSNumberとして入力する必要があることを意味します。

すっごく...

NSNumber *testNum = [NSNumber numberWithInt:varMoney];


NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:@"OMG, Object 1!!!!" forKey:@"1"];
[dictionary setObject:@"Number two!" forKey:@"2"];
[dictionary setObject:testNum forKey:@"3"];


NSNumber *retrieved = [dictionary objectForKey:@"3"];
int newVarMoney = [retrieved intValue];

ここで、varMoneyは以前に宣言されたintです。私の質問は、「int」をNSNumberに入れるよりも、辞書に保存する方が良い方法はありますか?

ありがとう!

編集:04/25/13

この質問をしてから久しぶりです。将来それを見つけた人のために、Apple LLVMコンパイラ4.0を使用してこれを行う簡単な方法があります。これは、Xcodeで少しデフォルトになっています。(アーク)

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:@1337 forKey:@"1"];

これで、@1337構文を使用してNSNumberオブジェクトをすばやく作成できます。変数で動作するので、上記は次のようになります。

[dictionary setObject:@(varMoney) forKey:@"3"];

また

dictionary[@"mykey"] = @1337;

よりシンプル。

4

3 に答える 3

18

あなたは正しいです、NSNumberこの状況を処理する通常の方法です。NSValueまたはも使用できますNSDecimalNumber

于 2009-11-10T01:13:29.430 に答える
5

Core Foundation (CFDictionaries) の使用にフォールバックする準備ができている場合は、好きなものを保存できます。私は間違いなく、任意の void* 値を入れる辞書を作成しました。

もう少し配管をする必要がありますが、それほど多くはありません。すべてが文書化されています。

于 2009-11-10T03:01:26.497 に答える
0

申し訳ありませんが、ありません:(私が知る限りではありません。整数はオブジェクトではなく、オブジェクトNSDictionaryのみを格納するためです。

于 2009-11-10T01:14:04.243 に答える