1
晚上,我正在使用Marvel-API,試圖下載所有的字符。Objective-C AFnetworking:停止請求
要下載所有需要進行多個請求的字符,請在每個請求中指定限制和偏移量。
所以我設定的上限在100最大和爲每個請求我增加100
偏移這樣做,我做無限的請求。當然。
所以我認爲我應該停止從JSON對象檢索到的「結果」數組爲空。
所以邏輯應該是好的,我一直要求100個字符100,直到沒有更多的檢索。
但是,當然,使用網絡和異步代碼並不總是那麼容易。顯然我有貨。
我敢肯定,問題是這行代碼:
#pragma mark - Requesting data
-(void)getData {
NetworkManager *networkManager = [NetworkManager alloc];
while(self.requestMustEnd == false) {
NSLog(@"offset: %d", networkManager.offset);
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:networkManager.getUrlPath parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@"JSON: %@", responseObject);
[self parseResponseData:responseObject];
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[networkManager increaseOffset];
}
}
#pragma mark - Parsing Method
-(void)parseResponseData:(NSDictionary *)responseDictionary {
NSArray *marvelArray = [[responseDictionary objectForKey:@"data"] objectForKey:@"results"];
if (marvelArray.count == 0) {
self.requestMustEnd = true;
}
for(NSDictionary* marvel in marvelArray)
{
Character *currentMarvelEntity = [[Character alloc] initWithMarvel:marvel];
//NSLog(@"currentMarvelEntity %@", currentMarvelEntity.name);
[self.marvelCharacters addObject:currentMarvelEntity];
}
[self.tableView reloadData];
}
的關鍵部件停止請求:
if (marvelArray.count == 0) {
self.requestMustEnd = true;
}
但是,儘管如此,它永遠不會結束,以請求。我敢肯定,這不是因爲if條件。但可能是因爲有一個異步代碼,getData函數無論是否保存請求數據。
任何提示?