向NSMutableDictionary添加对象的问题

时间:2011-12-28 16:22:19

标签: objective-c xcode nsmutabledictionary

我正在制作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。

3 个答案:

答案 0 :(得分:3)

问题可能是您没有通过说self.varsLoaded = [NSMutableDictionary dictionary];

来初始化您的varsLoaded

所以你要将对象添加到不存在的字典中,但是你没有得到异常,因为这在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:行。在运行时,您没有在构建日志或控制台中收到警告吗?