2012-02-29 3 views
2

プログラミングの経験がある人は、私にこの質問をするのは苦労します。私は数日前にobjective-cで遊んで始めました。NSDumberオブジェクトにNSNumberオブジェクトを単純に追加しようとしています。問題は、負の値を持つNSNumberオブジェクトを追加すると、NSNumberではなく文字列として追加されているように見えるということです。ここでNSDictionaryに負のNSNumber値を追加する

は、私は辞書を初期化しています方法です:

testDict = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithDouble:-3],@"x", 
             [NSNumber numberWithDouble:7, @"a", 
            nil]; 

私は、私が実際には2つの質問、1を持っていると思います)あなたが負の値を持っているのNSNumberオブジェクトを作成する方法をこのありませんか?

2)私は辞書を印刷するとき、私は、次を得る:

NSLog(@"dictionary = %@", self.testDict); 

a = 7; 
x = "-3"; 

-3周りなぜ二重引用符?

+0

私を悩ませていますどのようなコードの彼のラインであるtestDic =コンパイルされません。それは欠けている]。同様の構造ではない '[NSNumber numberWithDouble:-3]、@" x "'と '[NSNumber numberWithDouble:7、@" a "、nil]'もあります。 – Almo

+0

'numberWithDouble:7'の後ろに近い角かっこがありません。それはそれを修正します。 – jonkroll

答えて

3

あなたは正しいです、そしてすべてが問題ありません。それは誤解を招く辞書の記述です。

は(:iPhone上で入力された警告):、検証のNSLog()でブレークしてみてくださいするには

p [testDict objectForKey:@"x"]; 

それはするNSNumberのインスタンスであるためにそれを明らかにする必要があります。

2

@Conradシュルツは、それが

ことを確認する別の方法を(あなたがのNSLogに辞書を渡す際に何が起こっているかである)NSDictionaryのためのdescription方法は、辞書の内容を出力する方法の単なるアーティファクトだ、権利であります辞書のメンバーを繰り返し処理し、個々のオブジェクトの説明を印刷することが、期待通りに機能しています。その後、負の数の説明が文字列ではなく数字のように見えます。

NSDictionary* testDict = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithDouble:-3],@"x", [NSNumber numberWithDouble:7], @"a", nil]; 

NSArray *keys = [testDict allKeys]; 
for (NSString *key in keys) { 
    NSLog(@"%@ => %@", key, [testDict objectForKey:key]); 
} 

コンソール出力は次のようになります。

2012-02-29 12:38:39.544 test10[1055:f803] x => -3 
2012-02-29 12:38:39.546 test10[1055:f803] a => 7 
関連する問題