2

最近、AFNetworking 2.0 に更新しました。ドキュメンテーションによると、iOS6.0+ と互換性があります。ダウンロード方法 (画像とビデオの両方) を実装しようとしているときに、iOS 6.0 アプリを作成しています。使用例

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

しかし、「宣言されていない識別子 'AFURLSessionManager' の使用」エラーが発生しました。そして、AFURLSessionManager が iOS7 からのみ使用できるクラスを使用していることがわかりました。AFNetworking を使用して iOS6 で誰をダウンロードできますか?

また、ダウンロードの進行状況を確認する方法はありますか?

ありがとうございました

4

3 に答える 3

4

このAFHTTPRequestOperationクラスを使用して、iOS 6 でファイルのダウンロードを実行できます。基本的に必要なのは、操作のoutputStreamプロパティを設定してファイルを保存し、downloadProgressBlockプロパティを進行状況を監視することだけです。

以下の基本的なメソッドは、 のサブクラスであるクラスで宣言されていAFHTTPRequestOperationManagerます。このクラスのインスタンスを初期化するときに、プロパティを設定しましたbaseURL

- (AFHTTPRequestOperation *)downloadFileWithContentId:(NSString *)contentId destination:(NSString*)destinationPath {

    NSString *relativeURLString = [NSString stringWithFormat:@"api/library/zipped/%@.zip", contentId];
    NSString *absoluteURLString = [[NSURL URLWithString:relativeURLString relativeToURL:self.baseURL] absoluteString];

    NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:@"GET" URLString:absoluteURLString parameters:nil];

    void (^successBlock)(AFHTTPRequestOperation *operation, id responseObject) = ^void(AFHTTPRequestOperation *operation, id responseObject) {

    };

    void (^failureBlock)(AFHTTPRequestOperation *operation,  NSError *error) = ^void(AFHTTPRequestOperation *operation,  NSError *error) {

    };

    AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:successBlock failure:failureBlock];

    NSOutputStream *outputStream = [NSOutputStream outputStreamToFileAtPath:destinationPath append:NO];
    operation.outputStream = outputStream;

    [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {

    }];

    [self.operationQueue addOperation:operation];

    return operation;
}
于 2013-10-17T18:21:46.037 に答える
2

あなたが言うAFURLSessionManagerように、iOS 7でのみ利用可能です(によってサポートされています)ので、AFNetworking 2.0(、、など)のベースクラスを使用するNSURLSession必要があります。NSURLConnectionAFHTTPRequestOperationManagerAFHTTPRequestOperation

于 2013-10-10T12:31:15.233 に答える