According to the documentation for NSProgress I see that -[NSProgress localizedAdditionalDescription] can report download speed and time remaining, e.g.:
1.61 GB of 3.22 GB (2 KB/sec) — 2 minutes remaining
However, I'm not able to get those details when I associate an NSProgress to a NSURLSessionDownloadTask. Here's my code:
Downloader.h
@interface Downloader : NSObject
@property NSProgress *overallProgress;
-(void)startDownload;
@end
Downloader.m
- (void)startDownload {
    self.overallProgress = [NSProgress progressWithTotalUnitCount:100];
    [self.overallProgress setKind:NSProgressKindFile];
    [self.overallProgress setUserInfoObject:NSProgressFileOperationKindKey forKey:NSProgressFileOperationKindDownloading];
    [self.overallProgress becomeCurrentWithPendingUnitCount:100];
    [self work1];
    [self.overallProgress resignCurrent];
}
- (void)work1 {
    NSProgress *firstTaskProgress = [NSProgress progressWithTotalUnitCount:1];
    [firstTaskProgress setKind:NSProgressKindFile];
    [firstTaskProgress setUserInfoObject:NSProgressFileOperationKindKey forKey:NSProgressFileOperationKindDownloading];
    NSURL *downloadURL = [NSURL URLWithString:@"http://ipv4.download.thinkbroadband.com/200MB.zip"];
    NSURL *destinationDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject];
    NSURL *destinationURL = [destinationDirectory URLByAppendingPathComponent:[downloadURL lastPathComponent]];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    NSURLSessionDownloadTask *fileDownloadTask =
    [session downloadTaskWithURL:downloadURL
               completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error){
                   [[NSFileManager defaultManager] removeItemAtURL:destinationURL error:NULL];
                   [[NSFileManager defaultManager] moveItemAtURL:location toURL:destinationURL error:nil];
                   [firstTaskProgress setCompletedUnitCount:1];
               }];
    [fileDownloadTask resume];
}
DownloadObserver.m
-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    downloader = [Downloader new];
    [downloader addObserver:self
                 forKeyPath:@"overallProgress.fractionCompleted"
                    options:NSKeyValueObservingOptionNew
                    context:NULL];
    [downloader startDownload];
}
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSLog(@"%@", [downloader.overallProgress localizedAdditionalDescription]);
}
This only prints out:
0 of 100
Zero KB of 100 bytes
How can I get localizedAdditionalDescription to print the download speed and time remaining?