3
保留中のデータをサーバーにアップロードし、同じボタンをクリックしてサーバーデータベースからすべてのデータをダウンロードします。しかし、私はアップロード/ダウンロードの進行状況を示すプログレスバーを表示する方法を得ていません。私は "setDownloadTaskDidWriteDataBlock"を使ってみましたが、決して呼び出されません。 マイコード:iosのafnetworking 3.0で進行状況バーを表示するには?
-(void)asyncTask:(NSString *)strURL parameters:(NSDictionary *)dictParams success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure {
NSLog(@"parameters passed to server through services=%@",dictParams);
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
[manager POST:strURL parameters:dictParams progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"inside requestPostUrl JSON: %@", responseObject);
if([responseObject isKindOfClass:[NSDictionary class]]) {
if(success) {
success(responseObject);
}
}
else {
NSDictionary *response = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];
if(success) {
success(response);
}
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if(failure) {
failure(error);
}
}];
//以下の方法は、私を助けてください
[manager setDownloadTaskDidWriteDataBlock:^(NSURLSession *session,NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
CGFloat written = totalBytesWritten;
CGFloat total = totalBytesExpectedToWrite;
CGFloat percentageCompleted = written/total;
NSLog(@"percentage completed=%f",percentageCompleted);
dispatch_async(dispatch_get_main_queue(), ^{
// here is what you want
// vc.progressBarView.progress = (CGFloat)totalBytesWritten/totalBytesExpectedToWrite;
});
//Return the completed progress so we can display it somewhere else in app
// if(progressBlock){
// dispatch_async(dispatch_get_main_queue(), ^{
// progressBlock(percentageCompleted,remoteURLPath);
// });
// }
}];
誰かをトリガーされることはありません! ありがとうございました!進捗状況にこれを変更するnilを::
進行しようと自己 –
@matloobHasnainを、迅速に対応していただきありがとうございます。進捗状況:自己がエラーをスローしています - 互換性のない型 'void(^ _Nullable)(NSProgress * _Nonnull _strong)のパラメータに' ViewController '* const _strong'を送信しています –