1

次のコードがあります

NSURL *url = [NSURL URLWithString:@"http://wallpaperswide.com/download/flattened_grass-wallpaper-2800x1050.jpg"];  //Line1
NSData *data = [[NSData alloc] initWithContentsOfURL:url];  //Line2
UIImage *tmpImage = [[UIImage alloc] initWithData:data];  //Line3
NSLog(@"%@",tmpImage);  //Line4

line2 では、その URL の画像をダウンロードするのに時間がかかります...その間に、インターネット接続を確認する必要があります..どうすれば可能ですか?

私の問題を詳しく説明します....

LINE1 までは私の iPhone 用のインターネット接続があります。現在、line2 が実行されています...ダウンロード プロセスが進行中ですが、このプロセスの途中で、インターネット接続が失われました..

「インターネットに接続していません」とユーザーに通知するにはどうすればよいですか...

では、このプロセスの間にインターネット接続を確認するにはどうすればよいですか?

そのためのデリゲートメソッドはありますか...助けてください

前もって感謝します.....

4

6 に答える 6

2

あなたはこのようなことをすることができます

Reachability *reach = [Reachability reachabilityForInternetConnection];
NetworkStatus netStatus = [reach currentReachabilityStatus];
if (netStatus == NotReachable) {
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"" message:@"Could not connect to the server, please check your internet connection !" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [alert show];


}
else
{

 }

}
于 2013-02-25T07:57:29.217 に答える
2

私が普段やっているのはを使うことNSURLConnectionDelegateです。接続にエラーがある場合は、到達可能性を使用して、インターネットに問題があるかどうか、またはサーバーエラーであるかどうかを確認します。

于 2013-02-25T07:57:54.887 に答える
1

Reachabilityで見つけることができるTonyMillionの変更されたReachabilityクラスを使用できます

これを使用して、到達可能性が変更されたときに呼び出されるブロックを定義できます。したがって、これを使用してUIAlertViewを表示できます。

画像を非同期でダウンロードしたい場合は、AFNetworkingを使用することをお勧めします。使用するAFHttpClientにReachabilityStatusBlockを追加する可能性はすでに提供されています。

したがって、AFNetworking.hを次の場所にインポートする場合は、コードを書き直すことができます。

AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://wallpaperswide.com"]];
[client registerHTTPOperationClass:[AFImageRequestOperation class]];

[client setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    if(status == AFNetworkReachabilityStatusNotReachable){
        NSLog(@"Not reachable");
    }
}];

AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:[client requestWithMethod:@"GET" path:@"/download/flattened_grass-wallpaper-2800x1050.jpg" parameters:nil] success:^(UIImage *image) {
    NSLog(@"%@", image);
}];
[operation start];
于 2013-02-25T13:26:13.777 に答える
1

ここで可能な方法...

1) NSURLConnection デリゲート メソッドの使用。

2) Rechability クラスの使用

于 2013-02-25T12:32:36.640 に答える
1

NSURLConnection NSURLConnectionDelegate NSURLRequest *theRequest=[NSURLRequest requestWithURL:<br> [NSURL URLWithString:@“<a href="http://www.sina.com.cn/" rel="nofollow">http://www.sina .com.cn/”]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
NSURLConnection *theConncetion=[[NSURLConnection alloc]
initWithRequest:theRequest delegate:self];
if(接続)
{

receivedData=[[NSMutableDataデータ]保持];
}

  • (void) 接続: (NSURLConnection*) 接続 didFailWithError: (NSError*) エラー
于 2013-02-25T08:08:35.967 に答える
0

ついに私の質問に対する答えを見つけました...私は将来の参考のためにここに貼り付けています

グローバル変数を宣言します

NSMutableData *receivedData;

ViewDidLoadの場合:

receivedData=[[NSMutableData alloc]init];
NSURLRequest *theRequest =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://wallpaperswide.com/download/flattened_grass-wallpaper-2800x1050.jpg"]];


NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

if (theConnection)
{
}

else
{
    // Inform the user that the connection failed.
    UIAlertView *connectFailMessage = [[UIAlertView alloc] initWithTitle:@"NSURLConnection " message:@"Failed in viewDidLoad"  delegate: self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
    [connectFailMessage show];
}

NSURLConnectionデリゲートメソッド。

#pragma mark NSURLConnection methods

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
 {
[receivedData setLength:0];
 }

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[receivedData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    // inform the user
UIAlertView *didFailWithErrorMessage = [[UIAlertView alloc] initWithTitle: @"NSURLConnection " message: @"didFailWithError"  delegate: self cancelButtonTitle: @"Ok" otherButtonTitles: nil];
[didFailWithErrorMessage show];

//inform the user
NSLog(@"Connection failed! Error - %@ %@",
      [error localizedDescription],
      [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
 UIImage *tmpImage = [[UIImage alloc] initWithData:receivedData];
  myImageView.image=tmpImage;
 NSLog(@"%@",tmpImage);
}
于 2013-02-25T12:25:51.900 に答える