Swift 如何使用WKURLSchemeHandler服务大文件?

Swift 如何使用WKURLSchemeHandler服务大文件?,swift,macos,cocoa,wkwebview,wkurlschemehandler,Swift,Macos,Cocoa,Wkwebview,Wkurlschemehandler,我正在使用WKURLSchemeHandler为无法被WkWebView直接读取的本地文件提供服务。虽然它可以很好地处理像视频这样的小文件,但当它必须提供像视频这样的大文件时,它会完全冻结应用程序 现在,我正在一步一步地阅读完整的文件,这对于重要的文件是不合适的 data = try Data(contentsOf: fileUrl) 我该如何避免这种情况?有没有一种方法可以“流”文件的内容?didceive(Data)是一种特殊的方法,可以使用部分数据多次调用,因此可以进行分块读取/流式处理

我正在使用
WKURLSchemeHandler
为无法被
WkWebView
直接读取的本地文件提供服务。虽然它可以很好地处理像视频这样的小文件,但当它必须提供像视频这样的大文件时,它会完全冻结应用程序

现在,我正在一步一步地阅读完整的文件,这对于重要的文件是不合适的

data = try Data(contentsOf: fileUrl)
我该如何避免这种情况?有没有一种方法可以“流”文件的内容?

didceive(Data)
是一种特殊的方法,可以使用部分数据多次调用,因此可以进行分块读取/流式处理。从文档中看不出这一点,但他们在介绍scheme handler功能时这样说(参见32:30):

此外,
WKURLSchemeTask
的函数可以在后台线程上调用,无需在主线程上调用(并且可能会阻塞UI)