NSProgress显示完成时无法读取文件?

时间:2016-10-26 02:21:04

标签: ios objective-c afnetworking

我使用- (void)URLSession:(__unused NSURLSession *)session downloadTask:(__unused NSURLSessionDownloadTask *)downloadTask didWriteData:(__unused int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { self.progress.totalUnitCount = totalBytesExpectedToWrite; self.progress.completedUnitCount = totalBytesWritten; } 下载内容。

我使用KVO在 progress.fractionCompleted == 1 时读取下载的文件。当我读到文件时,我发现有一些 nil

所以,我想知道何时我可以阅读文件。 进度完成表示在磁盘上完全写入文件或只是接收所有数据

修改

   <!DOCTYPE html>
    <html>
        <head>
            <link type="text/css" rel="stylesheet" href="stylesheet2.css"/>
            <title>homepage</title>
        </head>
        <body>
            <div id="videowrap">
                <video id ="videobg" preload="auto" autoplay="true" loop>
                    <source src="secret.3gp" >
                </video>
            </div>
            <div id="button">
                <img src= "button.png"/>
            </div>
        </body>
    </html>

那么,应该首先写文件然后设置进度?但为什么我得到一个零?

1 个答案:

答案 0 :(得分:1)

如果要向用户显示某种进度,可以跟踪委托方法的进度。但那是你怎么知道何时抓取文件。

知道何时可以获取文件的方法是在委托方法URLSession:downloadTask:didFinishDownloadingToURL:触发时。您必须使用该委托方法获取文件

你必须立即 。你不能在它们之间使用KVO,因为在委托方法触发的时刻与通过KVO通知你的那一刻之间的间隔内,文件可能会被销毁。当我们从URLSession:downloadTask:didFinishDownloadingToURL:返回时,它会被销毁。这就是为什么你必须在里面那个方法中抓住它,而不是其他地方。