2009-06-13 69 views
1

我有一个服务于plist XML文件的servlet。什么是最好的方式来阻止这个到NSDictionary?我有这基本上与:规范的方式来阅读plist从URL到NSDictionary?如何控制超时?

NSDictionary* dict = [ [ NSDictionary alloc] initWithContentsOfURL: 
        [NSURL URLWithString: @"http://example.com/blah"] ]; 

但是,然后我无法控制超时;我宁愿没有将我的用户界面挂起60秒,只是因为服务器(我可能无法控制)有一个不合适的配合。我知道NSURLRequest,这将让我做到以下几点:

NSURLRequest *theRequest=[NSURLRequest requestWithURL: 
     [NSURL URLWithString: @"http://example.com/blah" 
        cachePolicy:NSURLRequestUseProtocolCachePolicy 
      timeoutInterval:5 ]; 

但我不很明白怎么养活,要NSDictionary中。

回答

5

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

Can I make POST or GET requests from an iphone application?

这将让您的数据,并将其放置在一个varibale:responseData。现在,您需要添加代码,将其转换为一个NSDictionary中在下面的方法:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection; 

我发现2种可能的方式的NSData转换为NSDictionary的。这种方式是直接从苹果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]; 
+0

优秀,感谢科里。来找一个方法...你给了我两个。 – 2013-03-25 23:23:46