2009-06-13 10 views
1

私はplist XMLファイルを提供するサーブレットを持っています。これをNSDictionaryに取り込む最良の方法は何ですか?私はこれを基本的に使っています:URLからNSDictionaryにplistを読み込む正規の方法ですか?タイムアウトを制御するには?

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

しかし、私はタイムアウトを制御できません。私はむしろ、私のUIが60秒間ハングしないようにしたいと思います。なぜなら、サーバ(私が制御できないかもしれない)がヒースなフィット感を持っているからです。

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

しかし、私はかなりNSDictionaryのにそれを養うためにどのように表示されていない:私は約NSURLRequest、私は次の操作を実行できるようになるこれを知っています。

答えて

5

非同期メソッドを使用する必要があります。この回答/ポストで開始:

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

これは、あなたのデータを取得し、varibaleに配置されます:responseData。今、あなたは、次の方法でNSDictionaryのに変換するようにコードを追加する必要があります。私はNSDictionaryのにNSDataのを変換するために2つの可能な方法を見つけた

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

。この方法は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]; 
+0

優れ、感謝コーリー。あなたは私に2つを与えました。 –

関連する問題