0

データソースのURLをチェックして、そのURLのオブジェクトを配列に取り込むコードを書くことを試みています。実際にはうまくいきますが、Web接続やアドレスに問題がある場合は、バンドルされたファイルからデータを配列に取り込みたいと思います。私が抱えている問題は、connection didFailWithErrorメソッドが呼び出されないということです。私は単純な文字列を渡そうとしましたが、呼び出しません。 ipod touchを使用している人や飛行機モードにいる人のためにアプリを機能させたい。NSURLConnectionがdidFailWithErrorを呼び出していません。

connection didReceiveResponse問題なく動作しています。

これは私が作業しているものです。

- (void)loadListData{ 
NSLog(@"Loading data from sources"); 

NSURLRequest *listURLRequest = [NSURLRequest requestWithURL:integerPhoneListURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:1.0]; 
[[NSURLConnection alloc] initWithRequest:listURLRequest delegate:self]; 

    if (!listConnectFail){ 
     phoneListJSON =[NSData dataWithContentsOfURL:integerPhoneListURL]; 
     [self performSelectorOnMainThread:@selector(fetchedData:) withObject:phoneListJSON waitUntilDone:YES]; 


    } else { 
     //This will tell us if there is an error loading the file 
     NSLog(@"File not found on web init from file"); 
     phoneListJSON =[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"contactlist" ofType:@"json"]]; 
     [self performSelectorOnMainThread:@selector(fetchedData:) withObject:phoneListJSON waitUntilDone:YES]; 
    } 



//Initialize the filtered list with array of customer objects. Based on original data 
filteredList = [[NSMutableArray alloc] init]; 

for (NSDictionary *dict in phoneListOriginal) { 
    contact *single = [[contact alloc] init]; 
    single.fName = [dict objectForKey:@"fName"]; 
    single.lName = [dict objectForKey:@"lName"]; 
    single.extension = [dict objectForKey:@"extension"]; 
    single.title = [dict objectForKey:@"title"]; 
    single.department = [dict objectForKey:@"department"]; 
    single.cellNumber = [dict objectForKey:@"cellNumber"]; 
    //NSLog(@"%@", single.lName); 
    [filteredList addObject:single]; 
} 


NSLog(@"Array filteredLIst contains %d records",[filteredList count]); } 

- (ボイド)接続:(NSURLConnection *)接続didFailWithError:(NSError *)エラー{

listConnectFail = YES; 
NSLog(@"Connection Failed, pulling from file"); } 

- (ボイド)接続:(NSURLConnection *)接続didReceiveResponse:(NSURLResponse *)レスポンス{ listConnectFail = NO; NSLog(@ "接続は成功し、APIから入力しました"); }

は、私はそれはおそらく私が見ていないですという愚かなものだけど、私は私が事前に

感謝しないものを見るためにヘルプを使用することができます!

答えて

0

代理人がメッセージを受信しなかったことをどのように確認しましたか?ログを確認しましたか?

あなたのコードは、必ずしもそうでないNSURLConnectionのinitが完了した直後に 'listConnectFail'が設定されると思われるようです。

[[NSURLConnection alloc] initWithRequest:listURLRequest delegate:self]; 
if (!listConnectFail){...} 

NSURLConnectionのドキュメントでは、「負荷が進むにつれて、デリゲートはデリゲートメッセージを受信します。」と述べています

しかし、飛行機モードについてはわかりませんが、この特定のエラーは同期して検出される可能性があります。

+0

ログは私に多くの情報を与えません。私が間違ったURLを与えた場合、最終的に 'SIGABRT'を破棄して戻すまで、何秒間もメッセージなしで待っています。 – Tenthrow

関連する問題