0

我正在尝试从我的 NSDictionary 中检索值但是我遇到了错误,我想知道是否有人可以帮助我解决我的问题。

我有 18 个值,并不是所有的值都显示在这里我正在检查,当达到正确的键时,我想获取 NSDictionary 中的值并将其传递给我的 NSString 变量之一。

下面是我正在尝试做的一个例子,但是就像我说我有几个问题一样

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 回答