我正在制作iPhone应用程序,我正在从服务器加载信息。我将NSURLRequest发送到服务器并获取NSString值。这工作正常,我得到的价值是正确的。问题是,当我尝试将变量的值添加到我已经存储值的NSMutableDictionary时,它不起作用。当我在Xcode中调试并查看NSMutableDictionary的值时,它会在我添加值的行之后立即显示0个键/值对。这就是我的代码:
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。
答案 0 :(得分:3)
问题可能是您没有通过说self.varsLoaded = [NSMutableDictionary dictionary];
所以你要将对象添加到不存在的字典中,但是你没有得到异常,因为这在objective-c中是正常的:)
答案 1 :(得分:0)
在进一步处理之前,您应该检查响应。用这样的东西包裹它:
if (response == nil) {
// Check for problems
}
else {
NSString *value = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
[varsLoaded setObject:value forKey:var];
}
答案 2 :(得分:-1)
将代码的第一行从NSArray
更改为NSMutableArray
,看看您是否有更好的运气。
您将varsLoaded
声明为其他地方的NSMutableDictionary
并不重要......在上述代码的本地上下文中,编译器认为varsToLoad
是不可变数组甚至可能没有编译你的setObject: forKey:
行。在运行时,您没有在构建日志或控制台中收到警告吗?