从 URL 下载 plist 并将其解析为 NSMutableDictionary?
Posted
技术标签:
【中文标题】从 URL 下载 plist 并将其解析为 NSMutableDictionary?【英文标题】:Download a plist from URL and parse it to a 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)
我是否给了错误的函数来添加对象????
【问题讨论】:
【参考方案1】:dictread 不应使用 initWithContentsOfFile: 进行初始化,因为该文件尚不存在。如果文件有错误(无法将其作为字典读取)或文件不存在,这将为 dictread 返回 nil。请尝试使用此初始化程序。
NSMutableDictionary *dictread = [[NSMutableDictionary alloc] initWithCapacity:[plistdata count]];
【讨论】:
我添加更多测试结果并投票给你的答案,请检查它〜【参考方案2】:你也可以说:
[[plistData objectAtIndex:0] writeToFile:filePath atomically:YES];
不过,这会阻止您更改键的名称。
【讨论】:
以上是关于从 URL 下载 plist 并将其解析为 NSMutableDictionary?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Flutter 中的 URL 下载文件并将其保存在 iOS 共享文件夹中?
从 URL 下载文件并将其放在 iPhone 的 Resource 文件夹中