2009-06-21 1 views
0

私は、iPhone OSアプリケーション内からサーバー上の.phpファイルからデータを取得しようとしています。 1つの方法では、私は次のコードを採用:私はアプリケーションを実行すると、アプリケーションは非常に速く、私が蒸散しているにデータ要求のための十分な時間があったことを疑うコードを通るようApp Wait for -initWithContentsOfURL:ウェブデータを取得しますか?

NSString *aString = [[NSString alloc] initWithContentsOfURL:aURL encoding:anEncoding error:nil]; 

//See what I got 
NSLog(aString); 

に思えます。結果の文字列は完全に空であり、それはさらに私の疑惑を支持する。ここで何が起きてるの?アプリが-initWithContentsOfURLがサーバー上の.phpファイルからデータを取得するのを待っていませんか?アプリケーションがこのメソッドを待っていない場合は、次のコードに移動する前に要求を完了するためのWAITSという方法でデータリクエストを実行するために使用できる別のメソッドがありますか?

(私もNSURLConnectionで少し読んだ - ?これは私が代わりに-initWithContentsOfURLのに探しべきことかもしれないです)

+0

メソッド呼び出しは、次のステートメントにジャンプする前にデータを取得するのを待つ必要があります。ブラウザからURLを呼び出してみましたが、取得したデータは何ですか?あなたの応答のヘッダー情報のcontent-typeは正しいですか?たぶんあなたはNSDataの代わりにそれを取得し、NSDataから文字列を取得する必要がありますか? – lostInTransit

答えて

3

NSURLConnectionそれはdoesnの...ウェブからファイルを取得するための素晴らしいです「Tは、それ自体が 『待機』が、そのデリゲートのコールバック:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection 

...データを受信した際に、データが完全にダウンロードされたときに通知を受けることを可能にします。このようにして、データが入ってくるとUIProgressBarをApp Show(好きな場合)に表示させて、それが完全に受信されたときにあなたが望むようにファイルを処理することができます。

+4

これらのメソッドは、NSURLConnectionを使用した呼び出しの場合、および非同期呼び出しを行っている場合にのみ呼び出されます。 initWithContentsOfURL:は同期呼び出しを行います – lostInTransit

関連する問題