如何在AFNetworking 2.0中使用Progress参数

我正在尝试使用NSURLSession的AFNetworking 2.0。 我正在使用该方法

- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; 

我该如何使用进度参数。 该方法是一种非阻塞方法。 因此,我将不得不听取“ progress ”来获取更新。 但参数不会占用一个属性。 只需要一个局部variables(NSProgress * __autoreleasing *)。 我无法将KVO添加到本地variables。

我不太确定如何使用。

任何时候参数都是以**forms给出的,这意味着你应该把指针传递给现有对象的指针,而不是像通常那样通过实际对象的指针。

在这种情况下,您传入指向NSProgress对象的指针,然后观察该对象中的更改以获取更新。

例:

 // 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]; 

然后它被报告在:

 - (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); } }