0

NSDictionarysをNSNumberキーとして取得および設定しようとしています。この回答https://stackoverflow.com/a/6891489/194309に従ってやっていると思いますが、以下のコードは null 値を返します。

- (void)viewDidLoad {
    [super viewDidLoad];

    NSInteger const SET1 = 1;
    NSInteger const SET2 = 2;


    videoKeyOfTag = [[NSDictionary alloc] initWithObjectsAndKeys:
                    [NSNumber numberWithInt:SET1], @"well",
                    [NSNumber numberWithInt:SET2], @"great",
                    nil];
    NSLog(@"to see well: %@",[videoKeyOfTag objectForKey:[NSNumber numberWithInt:SET1]]);   

}

ログに期待to see well: wellしていますが、代わりに、望ましくないものが表示されます。

to see well: (null)

から始めて、キーがsであるからintどのように呼び出すことができますか?objectForKeyNSDictionaryNSNumber

(最終的には、メタキーとしてNSDictionarywithから値を抽出したいと考えています。)[sender tag]

4

3 に答える 3

1

数字をキーにしたい場合は、コンストラクターで順序を逆にする必要があります。

videoKeyOfTag = [[NSDictionary alloc] initWithObjectsAndKeys:
                    @"well", [NSNumber numberWithInt:SET1], 
                    @"great", [NSNumber numberWithInt:SET2], 
                    nil];
于 2012-06-02T05:39:45.320 に答える
1

initWithObjectsAndKeys- 最初の引数は値、2 番目の引数はキーです。あなたは反対のことをしています。andを値ではなくキーとして使用@"well"しました。@"great"あなたは書くべきです:

videoKeyOfTag = [[NSDictionary alloc] initWithObjectsAndKeys:
                    @"well", [NSNumber numberWithInt:SET1],
                    @"great", [NSNumber numberWithInt:SET2],
                    nil];
于 2012-06-02T05:39:53.127 に答える
1

初期化メソッドが呼び出され、呼び出さinitWithObjectsAndKeys:れないのには理由がありますinitWithKeysAndObjects:(ただし、後者の方が私には理にかなっていますが、これは Apple です...) とにかく、奇数の引数 (1 番目、3 番目など) は値であり、偶数-番号 (2 番目、4 番目など) がキーです。だから試してください:

videoKeyOfTag = [[NSDictionary alloc] initWithObjectsAndKeys:
                @"well", [NSNumber numberWithInt:SET1],
                @"great", [NSNumber numberWithInt:SET2],
                nil];

代わりは。

于 2012-06-02T05:43:30.123 に答える