2011-08-12 12 views
0

JSONデータを非同期に取得したい。データは、1つの要求で8つのレコードしか持たないように設定されています。レスポンスが空になるまで、または8レコード未満を返すまで、リクエストを繰り返し送信する必要があります。JSONデータを非同期的に取得する

現在、私はmyviewcontroller.mクラスでこれらのメソッドを持っている:

(void)myCallback:(id)sender { 

    MyDataRequest *objMyDataRequest = [[[MyDataRequest alloc] init] autorelease]; 
    objMyDataRequest.myRequiredVariableToGetAuthTokenDataResponse = classOfMyCallBack.someVariable; 

    // Initiate getAuthToken request 
    [objWishListRequest initiateGetAuthTokenRequest:self requestSelector:@selector(getAuthTokenDataResponse:)]; 
} 

が今ここgetAuthTokenDataResponseの定義です:

(void) getAuthTokenDataResponse:(NSData *)data { 

    NSString *stringResponse = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
    SBJsonParser *parser=[[SBJsonParser alloc]init]; 
    NSDictionary *objDictionaryForStringResponse = [parser objectWithString:stringResponse]; 
    [stringResponse release]; 
    [parser release]; 
    MyListRequest *objMyListRequest = [[[MyListRequest alloc] init] autorelease]; 
    objMyListRequest.myRequiredValueToGetMyDataResponse = [objDictionaryForStringResponse objectForKey:@"Data"]; 

    // Initiate GetMyDataResponse request 
    [objMyListRequest initiateGetMyDataRequest:self requestSelector:@selector(getMyDataResponse:)]; 

} 


(void) getMyDataResponse:(NSData *)data { 

    NSString *stringResponse = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
    SBJsonParser *parser=[[SBJsonParser alloc]init]; 
    NSDictionary *objGetMyDataRootDictionary = [parser objectWithString:stringResponse]; 
    [stringResponse release]; 
    [parser release]; 
    NSDictionary *dataElements=[objGetMyDataRootDictionary objectForKey:@"Data"]; 
    Wish *objMyData; 

    for (NSDictionary* objGetMyDataRootDictionary in dataElements) { 
     objMyData = [[Wish alloc]init]; 
     //add different elements from dataElements into member variables of object objWish 
     [self.myDataArray addObject:objMyData]; 
     [objMyData release]; 
    } 
    [self.myDataTableView reloadData]; 
} 

このメソッドはMyDataRequestクラスである:

(void)initiateGetMyDataRequest:(id)requestDelegate requestSelector:(SEL)requestSelector{ 

    // Set the delegate and selector 
    self.delegate = requestDelegate; 
    self.callback = requestSelector; 

    NSString* unescapedUrlString = [NSString stringWithFormat:@"http://test.mytesturl.com/core.svc/alldata/My/get/All/?token=%@&search=&page=1",myRequiredtokenparameter]; 
    [self request:url]; 
} 

同じURLに複数のリクエストを送信する必要があります(別のパラメータで値、つまりページ番号の値)を使用して結果を取得します。上記のシナリオを考えれば、どのように達成できますか?呼び出しは非同期でなければなりません。

これらの呼び出しの間にどのように実際のフローを作成する必要がありますか? 「すべてのページ」のデータを非同期に取得するにはどうすればよいですか?

答えて

0

私はあなたが操作キューを探していると思います。私はASIHTTPRequestsを私のアプリで使用しています。

あなたはこのライブラリを使用したい場合は、ここでそれを使用するためにどのようにリンクがあります:Show UIActivityIndicatorView when loading NSString from Web

+0

申し訳ありませんが、ちょうどあなたが私の質問への回答を送ったことに気づきました。私は、返信がここに掲載されるときに私は電子メールを受け取ると思った。とにかく、私はほとんどのものを考え出しました。 UITableViewのスクロールをどのように扱うかのような小さな問題を残しました。あなたが私を助けることができるなら、それについて[ここ](http://stackoverflow.com/questions/7050659/need-sample-code-to-implement-paging-based-uiscrollview/7050791#7050791)を尋ねた。 – salman

関連する問題