Geo*_*old 1 iphone timeout nsdictionary plist
我有一个servlet,提供plist XML文件.什么是将其打入的最佳方法NSDictionary?我有这个基本上与:
NSDictionary* dict = [ [ NSDictionary alloc] initWithContentsOfURL:
[NSURL URLWithString: @"http://example.com/blah"] ];
Run Code Online (Sandbox Code Playgroud)
但后来我无法控制超时; 我宁愿不让我的UI挂起60秒只是因为服务器(我可能无法控制)有一个混蛋.我知道NSURLRequest,这将让我做以下事情:
NSURLRequest *theRequest=[NSURLRequest requestWithURL:
[NSURL URLWithString: @"http://example.com/blah"
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:5 ];
Run Code Online (Sandbox Code Playgroud)
但我不太明白如何将其提供给NSDictionary.
您需要使用异步方法执行此操作.从这个答案/帖子开始:
这将获取您的数据并将其放在varibale:responseData中.现在,您需要添加代码以使用以下方法将其转换为NSDictionary:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
Run Code Online (Sandbox Code Playgroud)
我找到了两种将NSData转换为NSDictionary的方法.这种方式直接来自Apple Archives and Serializations Guide.
NSString *errorStr = nil;
NSPropertyListFormat format;
NSDictionary *dictionary = [NSPropertyListSerialization propertyListFromData: responseData
mutabilityOption: NSPropertyListImmutable
format: &format
errorDescription: &errorStr];
Run Code Online (Sandbox Code Playgroud)
第二:
NSString *string = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding];
NSDictionary *dictionary = [string propertyList];
[string release];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4563 次 |
| 最近记录: |