【发布时间】:2019-11-23 09:51:24
【问题描述】:
我对 swift 比较陌生,尝试从我定义的委托调用视图控制器中的函数时遇到问题。如何从这个委托调用我的视图控制器中的函数?这是一个混合项目,主要由 Objective-C 代码组成,只有一个 Swift 控制器。该函数位于 Swift 控制器内部。下面是委托类:
class DelegateToHandle302:NSObject, URLSessionTaskDelegate {
func urlSession(_ session: URLSession, task: URLSessionTask, willPerformHTTPRedirection response: HTTPURLResponse, newRequest request: URLRequest, completionHandler: @escaping (URLRequest?) -> Void) {
//convert to https
let http = request.url!
var comps = URLComponents(url: http, resolvingAgainstBaseURL: false)!
comps.scheme = "https"
let httpsUrl = comps.url!
ViewControllerFunction(url: httpsUrl)
}
我收到错误使用未解析的标识符“ViewControllerFunction”。我尝试创建视图控制器的一个实例,但不认为这是正确的方法,因为这个视图控制器也有一个音频播放器(它也没有工作)。
这里是我从视图控制器中的函数调用委托的地方:
let urlString = "https://urlthatredirects.com"
let config = URLSessionConfiguration.default
let url = URL(string: urlString)
//set delegate value equal to SessionDelegate to handle 302 redirect
let delegate = DelegateToHandle302()
//establish url session
let session = URLSession(configuration: config, delegate: delegate, delegateQueue: nil)
//set task with url
let dataTask = session.dataTask(with: url!)
//init call
dataTask.resume()
我正在关注有关如何从重定向 (https://gist.github.com/mgersty/b565ba4c9e9422637f15f52a5317f07e) 获取最终 URL 的示例的一部分。我的视图控制器“标题”是:
@objc class AudioPlayerController: UIViewController{........}
我希望我已经提供了足够的信息,以便任何人都可以帮助我找出我做错了什么。我唯一需要做的就是调用该函数并将重定向 URL 传递给它。
【问题讨论】: