如何在 Swift (tvOS) 中通过 smb 下载文件? NetFS 和 Cooca 不适用于 tvOS,当我使用 URLSession dataTask
smb://xxx.xxx.xxx.xx/share/test.txt
Swift 告诉我 smb 不是有效的 url。
有什么解决方案可以通过 smb 下载 tvOS 的文件吗?
用这段代码尝试过:
let url = self.smbManager.getFullUrl(fileName: self.file.name)
let request: NSURLRequest = NSURLRequest(url: url!)
let session = URLSession.shared
session.dataTask(with: request as URLRequest) { data, response, error in
print(data)
}.resume()
错误是:
finished with error [-1002] Error Domain=NSURLErrorDomain
Code=-1002
"unsupported URL"
UserInfo={NSLocalizedDescription=unsupported
URL,
NSErrorFailingURLStringKey=smb://xxx.xxx.xxx.xx/share/test.txt,
NSErrorFailingURLKey=smb://xxx.xxx.xxx.xx/share/test.txt,
_NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <B386A17C-A4A9-4C99-A70E-7E0C739712D3>.<1>"
),
_NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask
<B386A17C-A4A9-4C99-A70E-7E0C739712D3>.<1>,
NSUnderlyingError=0x2813a7c60 {
Error Domain=kCFErrorDomainCFNetwork Code=-1002 "(null)"
}
}
谢谢。
中小企业解决方案:
let url = NSURL(string: "smb://xxx.xxx.xxx.xx/share/test.txt")
let request: NSURLRequest = NSURLRequest(URL: url!)
let session = NSURLSession.sharedSession()
session.dataTaskWithRequest(request) { (data, response, error) -> Void in print("Response")
let reply = NSString(data: data!, encoding: NSUTF8StringEncoding)
print(reply)
}
URLSession
的设计目的是使网络传输尽可能简单,一个很好的例子就是它的 downloadTask() 方法。这会获取您指定的 URL 的内容,将其保存到本地文件,然后调用完成处理程序,以便您可以操作该文件 – 全部都在一个过程中。
为了演示这一点,这里有一些将源代码下载到 apple.com 主页的代码:
let url = URL(string: "https://www.apple.com")!
let task = URLSession.shared.downloadTask(with: url) { localURL, urlResponse, error in
if let localURL = localURL {
if let string = try? String(contentsOf: localURL) {
print(string)
}
}
}
task.resume()
其中有一些重要的事情需要注意:
resume()
让它发生。URLSession
跟踪
代表您。