-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が値ではなくハッシュテーブルに入れられていると思います。私はそれが間違った方法だと思います。解決策を達成するためにワットを行うことができますか?

4

1 に答える 1

2

(1)、あなたは書くべきです

 NSString* newseparator = @"=";

直接使用していますが

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

はるかに優れています(またはnewseparatorグローバル定数を作成します)。


(2)、あなたの最後の声明、

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

NSMutableDictionary(a)はタイプであるため、無効です。(b)変更可能な辞書ではなく、辞書を作成している。(c)毎回作成し、前のものを上書きします。(d)定数値@"class_name"とキーを使用して辞書を作成していますが、これは実際の変数と@"key"に対応していません。class_namekey

キーと値のペアを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;
于 2010-02-08T08:56:27.337 に答える