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に複数のリクエストを送信する必要があります(別のパラメータで値、つまりページ番号の値)を使用して結果を取得します。上記のシナリオを考えれば、どのように達成できますか?呼び出しは非同期でなければなりません。
これらの呼び出しの間にどのように実際のフローを作成する必要がありますか? 「すべてのページ」のデータを非同期に取得するにはどうすればよいですか?
申し訳ありませんが、ちょうどあなたが私の質問への回答を送ったことに気づきました。私は、返信がここに掲載されるときに私は電子メールを受け取ると思った。とにかく、私はほとんどのものを考え出しました。 UITableViewのスクロールをどのように扱うかのような小さな問題を残しました。あなたが私を助けることができるなら、それについて[ここ](http://stackoverflow.com/questions/7050659/need-sample-code-to-implement-paging-based-uiscrollview/7050791#7050791)を尋ねた。 – salman