0

自分に合った解決策が見つかりませんでした。しかし、ダウンロードしているビデオのファイル サイズを取得して、ユーザーの電話に十分なスペースがあることを確認する必要があります。

私の考えでは、ビデオのサイズを確認し、ユーザーにスペースがあればダウンロードします。推奨事項はありますか?

NSURL *url = [NSURL URLWithString:stringURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSession *session = [NSURLSession sharedSession];

NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {...}];
4

4 に答える 4

-1

この関数を使用して、URL のリモート サイズを取得します。この関数は同期的であり、スレッドをブロックすることに注意してください。そのため、メイン スレッドとは異なるスレッドから呼び出します。

extension NSURL {
    var remoteSize: Int64 {
        var contentLength: Int64 = NSURLSessionTransferSizeUnknown
        let request = NSMutableURLRequest(URL: self, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 30.0);
        request.HTTPMethod = "HEAD";
        request.timeoutInterval = 5;
        let group = dispatch_group_create()
        dispatch_group_enter(group)
        NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
            contentLength = response?.expectedContentLength ?? NSURLSessionTransferSizeUnknown
            dispatch_group_leave(group)
        }).resume()
        dispatch_group_wait(group, dispatch_time(DISPATCH_TIME_NOW, Int64(5 * NSEC_PER_SEC)))
        return contentLength
    }
}

次に、メインスレッドとは異なるスレッドで、必要な場所で remoteSize 変数を呼び出します。

let size = url.remoteSize
于 2015-09-07T21:41:51.460 に答える