如何在Swift(tvOS(中通过smb下载文件?NetFS和Cooca不可用于tvOS,并且当我使用URLSession数据任务时;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()
错误为:完成时出现错误[-1002]错误域=NSURLError域代码=-1002";不支持的URL";UserInfo={NSLocalizedDescription=不支持的URL,NSErrorFailingURLStringKey=smb://xxx.xxx.xxx.xx/share/test.txt,NSErrorFailingURLKey=smb://xxx.xxx.xsx/share/test.txt,_NSURLErrorRelatedURLSessionTaskErrorKey=("LocalDataTask<1>quot;),_NSURLErrorFailingURLSessionTaskErrorKey=本地数据任务<1>,NSUnderlyingError=0x2813a7c60{错误域=kCFErrorDomainCF网络代码=-1002"(空("}}
谢谢。
smb解决方案
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()
这里有几件重要的事情需要注意:
- 使用本地URL调用您的完成处理程序,该URL是数据本地保存的位置。这是可选的,所以您需要小心地打开它
- 如果出现问题,例如网络故障,那么您将把一个错误传给你,解释发生了什么
- 创建下载任务后,应致电
resume()
让它发生 - 您不需要担心将下载任务存储在某个地方当它发生时,它被上的共享
URLSession
跟踪代表您