2012-05-31 4 views
0

두 개의 NSMutableDictionary : dictionary1과 dictionary2를 만듭니다. 첫 번째 사전에서는 키가있는 배열 객체를 저장합니다. 그리고 두 번째 사전에이 같은 키와 첫 번째 사전의 객체를 저장 :NSMutableDictionary에서 NSMutableDictionary 값 가져 오기

int page = 1; 
[dictionary2 setObject:dictionary1 forKey:[NSString stringWithFormat:@"%d",page]]; 
[dictionary1 removeAllObjects]; 

하지만 난이

dictionary1 = [dictionary2 valueForKey:[NSString stringWithFormat:@"%d",page]]; 
NSLog(@"dictionary1 %@", dictionary1);` 

같이 할 객체의 검색시 그 다음은 null 값을 제공합니다 . 내가 뭘 잘못했는지 모르겠다.

답변

4

을 시도합니다.

사전 2와 동일한 사전이므로 사본을 만들지 않으므로 그 사본도 삭제됩니다.

[dictionary1 removeAllObjects]; 줄을 제거해야합니다. 이 시점에서 dictionary1으로 수행되기 때문에 그런

는, 당신은에 대한 참조를 제거하거나 사용할 수 있습니다 멋진 새 반짝 사전에 설정할 수 있습니다 :

// Remove the reference 
dictionary1 = nil; 

// Or, create a new, empty dictionary 
dictionary1 = [[NSDictionary alloc] init]; 
+0

감사합니다. 하지만 먼저 dictionary1에서 removeAllObjects를 원하고 다음에 dictionary1에 추가하려고합니다. 이제 어떻게해야합니까? –

+0

'removeAllObjects' 대신'dictionary1 = [[NSDictionary alloc] init];'을 사용하여 새로운 사전이나'dictionary1 = nil;'으로 설정 한 다음 사용할 준비가되면 새 사전을 만듭니다. 처음. – lnafziger

0

/init dictionary1dictionary2을 올바르게 할당 했습니까? 사전 자체가 nil이 아닌지 확인하십시오.

0

당신이 모든 개체를 제거하면 dictionary1dictionary2에 추가 한 후이

dictionary1 = [dictionary2 objectForKey:[NSString stringWithFormat:@"%d",page]];