0

NSDictionary から値を取得しようとしていますが、エラーが発生しています。誰かが私の解決策を手伝ってくれるのではないかと思っていました。

私は 18 個の値を持っていますが、すべてがここに表示されているわけではありません。正しいキーに到達したら、NSDictionary の値を取り、NSString 変数の 1 つに渡したいと思います。

以下は私がやろうとしていることの例ですが、私が言うようにいくつかの問題があります

for (id key in searchData) {
    if ([[searchData objectForKey:key] isEqualToString:@"Code"]) {
        codeSeries = [searchData objectForKey:key];
    }
    else if ([[searchData objectForKey:key] isEqualToString:@"ID"]) {
        IDSeries = [searchData objectForKey:key];
    }

    // ...

ただし、値のいずれかをログアウトしようとすると、すべてが返されNullます。私は事前に辞書をチェックしましたが、値はすべて間違いなくそこにあるので、上記のコードに何か問題があると思います。

どんな助けでも大歓迎です。

アップデート

これは私がNSDictionaryを作成する方法です

//start of mymethod...

NSDictionary *sendSeriesDictionary = [[NSDictionary alloc] init];
    
    // Keys for sendSeriesDictionary
    NSArray *keys = [NSArray arrayWithObjects:@"Code", @"ID", nil];
    
    // Objects for keys that are for sendSeriesDictionary
    NSArray *objects = [NSArray arrayWithObjects: [NSNull null], IdString, nil];
    
    // Add keys and objects to NSDictionary
    sendSeriesDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];


[engineRequests SeriesSearch:sendSeriesDictionary]; // this is where I send the NSDictionary over to where I want to read it.

//end of mymethod
4

2 に答える 2

1

キーと値を混ぜていますか?

多分あなたはただ欲しいcodeSeries = [searchData objectForKey:@"Code"];ですか?

于 2012-07-24T21:19:14.477 に答える
1

いくつかの問題があります。まず、キーと値を混同します(トムが言ったように)。次に、辞書を作成する場所でメモリリークが発生する可能性があります。または、少なくとも不要なインスタンス化が発生する可能性があります。

辞書を作成するためにこれを試してください:

// Keys for sendSeriesDictionary
NSArray *keys = [NSArray arrayWithObjects:@"Code", @"ID", nil];

// Objects for keys that are for sendSeriesDictionary
NSArray *objects = [NSArray arrayWithObjects: [NSNull null], IdString, nil];

// Add keys and objects to NSDictionary
NSDictionary *sendSeriesDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

値の取得は次のように実行できます。

codeSeries = [searchData objectForKey:@"Code"];
IDSeries = [searchData objectForKey:@"ID"];

最初のループでは、すべてのキーをループし、それらの値を取得してから、それらをキーと再度比較しました。これは意味がありません。

于 2012-07-24T23:32:27.710 に答える