1

我有一个提供 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。

4

1 回答 1

5

您需要使用异步方法执行此操作。从这个答案/帖子开始:

我可以从 iphone 应用程序发出 POST 或 GET 请求吗?

这将为您获取数据并将其放在一个变量中: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];
于 2009-06-14T18:29:16.277 回答