【问题标题】:Download a plist from URL and parse it to a NSMutableDictionary?从 URL 下载 plist 并将其解析为 NSMutableDictionary?
【发布时间】:2010-11-12 07:57:39
【问题描述】:

大家好~

这就是我从 URL 下载 plist 的方式

NSURLRequest *theRequest=[NSURLRequest requestWithURL:setDefaultPwdAndSnURL                                              cachePolicy:NSURLRequestUseProtocolCachePolicy
                         timeoutInterval:60.0];
NSData    *returnData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:nil error:nil];
NSString *listFile = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

[listFile dataUsingEncoding:NSUTF8StringEncoding];
NSArray *plistData = [listFile propertyList];

这就是我得到的结果

plistdata is(
        {
        sn = 1;
        pwd = 123;
    }
)

我想把它保存到 NSMutableDictionary

NSArray *paths      = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *docPath    = [paths objectAtIndex:0];
 NSString *filePath   = [docPath stringByAppendingPathComponent:@"DevicePassword.plist"];
 NSMutableDictionary *dictread  = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];

 NSMutableDictionary *device_serialnumber = [NSMutableDictionary dictionaryWithObject:[[plistData objectAtIndex:0]valueForKey:@"sn"]
                      forKey:@"serial_number"];

 NSMutableDictionary *device_password = [NSMutableDictionary dictionaryWithObject:[[plistData objectAtIndex:0]  valueForKey:@"pwd"]
                   forKey:@"password"];
 [dictread addEntriesFromDictionary:device_serialnumber];
 [dictread addEntriesFromDictionary:device_password];               
 [dictread writeToFile:filePath atomically:YES];

但我Log(@"dictread is :%@",dictread);

得到 dictread : (NULL)

.......所以我解析一个空的东西来听写????

请帮我解决这个问题....@_@

非常感谢~

注意:

我改变了一些初始化值并记录下来检查

NSMutableDictionary *device_serialnumber = [NSMutableDictionary dictionaryWithObject:@"123"
                      forKey:@"serial_number"];

 NSMutableDictionary *device_password = [NSMutableDictionary dictionaryWithObject:@"456"
                   forKey:@"password"];

我有两个字典“device_serialnumber”和“device_password”

但“dictread”仍然(NULL)

我是否给了错误的函数来添加对象????

【问题讨论】:

    标签: iphone objective-c nsarray plist nsmutabledictionary


    【解决方案1】:

    dictread 不应使用 initWithContentsOfFile: 进行初始化,因为该文件尚不存在。如果文件有错误(无法将其作为字典读取)或文件不存在,这将为 dictread 返回 nil。请尝试使用此初始化程序。

    NSMutableDictionary *dictread  = [[NSMutableDictionary alloc] initWithCapacity:[plistdata count]];
    

    【讨论】:

    • 我添加更多测试结果并投票给你的答案,请检查它〜
    【解决方案2】:

    你也可以说:

    [[plistData objectAtIndex:0] writeToFile:filePath atomically:YES];
    

    不过,这会阻止您更改键的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 2011-01-14
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 2018-01-01
      • 2012-06-15
      相关资源
      最近更新 更多