Clear Read APIを介して一連のURLを実行しようとしています(基本的にURLから記事の部分を抽出します)。AFNetworkingLibraryを使用しています。
APIとの対話を簡素化するために使用するAFClearReadClient
サブクラスであるクラスがあります。AFHTTPClient
そこで、ベースURLとそれがJSONリクエストであるという事実を設定しました。
#import "AFClearReadClient.h"
#import "AFJSONRequestOperation.h"
@implementation AFClearReadClient
+ (AFClearReadClient *)sharedClient {
static AFClearReadClient *sharedClient = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedClient = [[AFClearReadClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://api.thequeue.org/v1/clear?url=&format="]];
});
return sharedClient;
}
- (id)initWithBaseURL:(NSURL *)url {
if (self = [super initWithBaseURL:url]) {
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
[self setDefaultHeader:@"Accept" value:@"application/json"];
}
return self;
}
次に、ループする記事のリストを格納し、NSDictionary
各記事のURLを取得し、そこから差し迫ったリクエストのパラメーターを作成します(パラメーターは、GET変数とベースURLの値ですよね?)、次に、リクエストを作成し、それをすべてのリクエストを保持する配列に追加します。
次に、それらをバッチエンキューします(これは私が正しく行っているとは思いません)。これにより、各リクエストが作成されてキューに入れられ、アクションが実行されるプロセスに入れられます。しかし、progressBlockで何をしますか?返されたJSONにアクセスできないため(ローカル変数はただNSUIntegers
のようです)、やりたいことができません(返された記事のテキストを保存してください)。
- (void)addArticlesToQueueFromList:(NSDictionary *)articles {
// Create an array to hold all of our requests to make
NSMutableArray *requests = [[NSMutableArray alloc] init];
for (NSString *key in articles) {
NSString *articleURL = [[articles objectForKey:key] objectForKey:@"resolved_url"];
NSDictionary *requestParameters = @{@"url": articleURL,
@"format": @"json"};
NSMutableURLRequest *request = [[AFClearReadClient sharedClient] requestWithMethod:@"GET" path:nil parameters:requestParameters];
[requests addObject:request];
}
// [[AFClearReadClient sharedClient] setMaxConcurrentOperationCount:5];
[[AFClearReadClient sharedClient] enqueueBatchOfHTTPRequestOperationsWithRequests:[requests copy] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {
} completionBlock:^(NSArray *operations) {
}];
}
また、この方法をどのように使用すべきかわかりませんsetMaxConcurrentOperationCount:
。AFClearReadClient
それはクラスで行われるべきですか?