2012-07-24 3 views
0

NSDictionary에서 값을 검색하려고하는데 오류가 발생합니다. 누군가 내 솔루션으로 나를 도울 수 있는지 궁금합니다.값을 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 

답변

1

몇 가지 문제가 있습니다. 먼저, 키와 값을 혼합합니다 (Tom이 말했던 것처럼). 둘째, 사전을 만들거나 사전에 불필요한 인스턴스를 생성 할 수있는 메모리 누수가 발생할 수 있습니다. 다음과 같이 할 수있는 값을 가져

// 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"]; 

를 첫 번째 루프에서 당신은, 모든 키를 통해 루프 그 값을 가지고 다음 그것들을 다시 열쇠와 비교했다. 어떤 의미가 없습니다.

+0

완벽한 !!!!! :) 고마워.............. 같은 NSDictionary를 원래대로하지 않았는지 모르겠다. 나는 두 부분으로 코드를 작성한 것으로 생각하고, 정리를하지 않았다. – HurkNburkS

1

당신이 믹싱 키와 값을 생성하는 방법이 무엇입니까?

아마도 codeSeries = [searchData objectForKey:@"Code"];을 원할 것입니까?

+0

좋아요. 나는 이것을 시도 할 것입니다. 나는 사전을 잃어버린 abit입니다. 나는 그들을 어떻게 만드는지 잘 이해하지만 잘 사용하는 방법을 모르겠습니다. – HurkNburkS

+0

이것은 나의 첫번째 생각이었다. 그리고 (if ([(NSString *) key isEqualToString : @ "Code"])'또한 더 쉽게하기 위해서 ... for (NSString * key in searchData)'를 사용할 수 있습니다.'if ([key isEqualToString : @ "Code"])' –

+0

사전을 작성하는 방법을 보여 주거나 현재 사전 내용의 로그 출력을 보내야합니다. – Tom

관련 문제