我有一个提供plist XML文件的servlet。将其强制转换为NSDictionary
的最佳方法是什么?我有这个基本上与:
NSDictionary* dict = [ [ NSDictionary alloc] initWithContentsOfURL:
[NSURL URLWithString: @"http://example.com/blah"] ];
但是我无法控制超时;我宁愿不让我的UI挂起60秒只是因为服务器(我可能无法控制)有一个混蛋。我知道NSURLRequest
,这将让我做以下事情:
NSURLRequest *theRequest=[NSURLRequest requestWithURL:
[NSURL URLWithString: @"http://example.com/blah"
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:5 ];
但我不太清楚如何将其提供给NSDictionary。
答案 0 :(得分:5)
您需要使用异步方法执行此操作。从这个答案/帖子开始:
Can I make POST or GET requests from an iphone application?
这将为您提供数据并将其放在varibale中:responseData。现在,您需要添加代码以使用以下方法将其转换为NSDictionary:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
我找到了两种将NSData转换为NSDictionary的方法。这种方式直接来自Apple Archives and Serializations Guide。
NSString *errorStr = nil;
NSPropertyListFormat format;
NSDictionary *dictionary = [NSPropertyListSerialization propertyListFromData: responseData
mutabilityOption: NSPropertyListImmutable
format: &format
errorDescription: &errorStr];
第二
NSString *string = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding];
NSDictionary *dictionary = [string propertyList];
[string release];