Как добавить значение строки в хеш-таблицу в кодировке iPhone? - PullRequest
0 голосов
/ 08 февраля 2010
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 и key помещаются в хеш-таблицу, а не в значение. Я полагаю, это неправильный метод. что можно сделать, чтобы достичь решения?

1 Ответ

2 голосов
/ 08 февраля 2010

(1), вы должны написать

 NSString* newseparator = @"=";

хотя напрямую с помощью

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

намного лучше (или сделать newseparator глобальной константой).


(2), Ваше последнее заявление,

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

недопустимо, потому что (a) NSMutableDictionary является типом; (б) вы создаете словарь, а не изменяемый словарь; (в) вы создаете его каждый раз и перезаписываете предыдущие; (d) вы создаете словарь с постоянными значениями @"class_name" и ключами @"key", который не соответствует фактическим переменным class_name и key.

Чтобы добавить пары ключ-значение в 1 хеш-таблицу, вы должны создать изменяемый словарь в начале

NSMutableDictionary* dict = [NSMutableDictionary dictionary];

и затем в цикле используйте -setObject:forKey:, чтобы добавить его в словарь:

[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;
...