2010-02-08 2 views
-1
for(NSString *s in mainarr) 
{ 
    NSString newseparator = @"="; 
    NSArray *subarray = [s componentsSeparatedByString : newseparator]; 

    //Copying the elements of array into key and object string variables 

    NSString *key = [subarray objectAtIndex:0]; 
    NSLog(@"%@",key); 
    NSString *class_name= [subarray objectAtIndex:1]; 
    NSLog(@"%@",class_name); 

    //Putting the key and objects values into hashtable 
    NSDictionary *dict= [NSDictionary dictinaryWithObject:@"class_name" forKey:@"key"]; 
}  

안녕하세요 .. 위의 코드에서 for 루프의 배열 요소를 구문 분석 한 다음 하위 문자열 키와 class_name을 해시 테이블에 넣어야합니다. 이러한 문자열 변수의 값을 해시 테이블에 저장하는 방법. 위의 코드에서 class_name 변수와 key가 값이 아닌 hashtable에 들어 있다고 생각합니다. 나는 그것의 잘못된 방법을 가정합니다. 와트는 해결책을 달성하기 위해 할 수 있습니까?iPhone 코딩에서 해시 테이블에 문자열 값을 추가하는 방법은 무엇입니까?

답변

2

(1), 직접

NSArray *subarray = [s componentsSeparatedByString:@"="]; 

를 사용하지만, 훨씬 더

NSString* newseparator = @"="; 

쓰기 (또는 newseparator 글로벌 일정을)해야한다.


(2) 귀하의 마지막 문장 (A) NSMutableDictionary이 타입이기 때문에

NSMutableDictionary = [NSDictionary dictinaryWithObject:@"class_name" forKey:@"key"]; 

이 유효하지 않습니다; (b) 변경 가능한 사전이 아닌 사전을 작성 중입니다. (c) 당신은 그것을 매번 생성하고, 이전의 것을 덮어 씁니다; (d) 상수 값 @"class_name"@"key" 키를 사용하여 실제 변수 class_namekey에 해당하지 않는 사전을 생성하고 있습니다.

:

는 처음

NSMutableDictionary* dict = [NSMutableDictionary dictionary]; 

다음 루프에서, 사전에 추가 할 -setObject:forKey:를 사용에서 변경 가능한 사전을 만들어야합니다, 1 개 해시 테이블에 키 - 값 쌍을 추가하려면


[dict setObject:class_name forKey:key]; 

NSMutableDictionary* dict = [NSMutableDictionary dictionary]; 
for(NSString *s in mainarr) { 
    NSArray *subarray = [s componentsSeparatedByString:@"="]; 

    // Get the elements of array into key and object string variables 
    NSString *key = [subarray objectAtIndex:0]; 
    NSLog(@"%@",key); 
    NSString *class_name= [subarray objectAtIndex:1]; 
    NSLog(@"%@",class_name); 

    //Putting the key and objects values into hashtable 
    [dict setObject:class_name forKey:key]; 
}  
return dict; 
01로 코드를 수정해야합니다, 결론적으로
+0

고마워. .. 그거야 :) – suse

+0

해시 테이블에 키가있는 객체를 넣을 수 있습니까? myClass * obj = [[myClass alloc] init];와 같이 작성할 수 있습니다. [사전 설정 객체 : obj forKey : 키]; – suse

+1

@suse : 예. 임의의 ObjC 객체를 사전의 값으로 넣을 수 있습니다. – kennytm

관련 문제