2011-12-28 6 views
2

iPhoneアプリケーションを作成していて、サーバーから情報をロードしています。 NSURLRequestをサーバーに送信し、NSString値を取得します。これは正常に動作しており、私が元に戻す価値は正しいものです。問題は、値を格納するためにNSMutableDictionaryに変数の値を追加しようとすると、機能しないということです。私がデバッグし、XcodeのNSMutableDictionaryの値を見ると、値を追加する行の直後に0のキー/値のペアが表示されます。これは私のコードのようになります:NSMutableDictionaryにオブジェクトを追加する際の問題

NSArray *varsToLoad = [fixedData objectForKey:@"varsToLoad"]; 
    NSError *error; 
    for(NSString *var in varsToLoad){ 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: someURL]]; 
     [request setHTTPMethod:@"POST"]; 
     NSMutableString *file = [NSMutableString stringWithString:@"file="]; 
     NSString *file1 = [file stringByAppendingString:var]; 
     NSString *file2 = [file1 stringByAppendingString:@".txt"]; 
     [request setHTTPBody:[file2 dataUsingEncoding:NSUTF8StringEncoding]]; 
     NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error]; 
     NSString *value = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 
     [varsLoaded setObject:value forKey:var]; 
    } 

varsLoadedは@implementationで宣言され、NSMutableDictionaryです。

答えて

2

問題は、あなたがself.varsLoaded = [NSMutableDictionary dictionary];

だからあなたは非既存の辞書にオブジェクトを追加していると言って、あなたのvarsLoadedを初期化していないことかもしれないが、これは客観的では正常ですので、あなたは、例外を取得していません-c :)

+1

それは私にも起こりましたが、そういう場合には、デバッガでキーと値のペアが0にならない場合はゼロになります。 – jrturton

+1

いいえ、デバッガウィンドウに初期化されていない辞書が0のキーと値のペアとして表示されます。私はそれをテストしました。 – aslisabanci

+0

その場合、あなたはおそらく正しいでしょう! – jrturton

-1

コードの最初の行をNSArrayからNSMutableArrayに変更して、より良い運があるかどうかを確認してください。

上記、コンパイラはvarsToLoadは不変配列であり、おそらくあなたのsetObject: forKey:行をコンパイルされていないと考えているあなたのvarsLoadedどこかNSMutableDictionaryとして...そのコードのローカルコンテキストで使用すると、宣言していることは重要ではありません。実行中にビルドログやコンソールに警告が表示されない

+0

コードによると、varsToLoadとVarsLoadedは異なるオブジェクトです。おそらくvarsLoadedはNSMutableDictionaryです。 downvote was not from me btw – MadhavanRP

0

さらに処理する前に応答を確認する必要があります。

if (response == nil) { 
    // Check for problems 

} 
else { 
    NSString *value = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 
     [varsLoaded setObject:value forKey:var]; 
} 
+0

応答が適切な値を返していません –

関連する問題