1

plist XML ファイルを提供するサーブレットがあります。これをスラップする最良の方法は何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 に変換する 2 つの方法を見つけました。この方法は、Apple Archives and Serializations Guideからそのままです。

NSString *errorStr = nil;
NSPropertyListFormat format; 

NSDictionary *dictionary = [NSPropertyListSerialization propertyListFromData: responseData
                mutabilityOption: NSPropertyListImmutable
                format: &format
                errorDescription: &errorStr];

2番:

NSString *string = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding];
NSDictionary *dictionary = [string propertyList];
[string release];
于 2009-06-14T18:29:16.277 に答える