How to use Progress parameter in AFNetworking 2.0

前端 未结 1 854
南旧
南旧 2020-12-16 17:45

I am trying to use AFNetworking 2.0 with NSURLSession. I am using the method

- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
              


        
相关标签:
1条回答
  • 2020-12-16 18:04

    Any time an argument is given as ** it means that you're supposed to pass in the pointer to the pointer to an existing object, not a pointer to the actual object as you would normally do.

    In this case, you pass in a pointer to a pointer to an NSProgress object and then observe the changes in that object in order to get the updates.

    Example:

    // Create a progress object and pass it in
    NSProgress *progress;
    [sessionManager uploadTaskWithRequest:request fromFile:fileURL progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
        // Completion code
    }];
    
    // Observe fractionCompleted using KVO
    [progress addObserver:self
              forKeyPath:@"fractionCompleted"
                 options:NSKeyValueObservingOptionNew
                 context:NULL];
    

    Then it gets reported in:

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    {
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    
        if ([keyPath isEqualToString:@"fractionCompleted"] && [object isKindOfClass:[NSProgress class]]) {
            NSProgress *progress = (NSProgress *)object;
            NSLog(@"Progress is %f", progress.fractionCompleted);
        }
    }
    
    0 讨论(0)
提交回复
热议问题