Alamofire请求未发送问题:GET请求代码未执行print(data)
问题解决办法
你的代码没触发请求、进不了回调的核心原因是请求对象被提前释放了。
Swift的ARC会自动回收不再被引用的对象,你现在把AF.request返回的DataRequest存在局部变量里,代码块执行完后这个变量就被销毁了,请求还没发出去就被取消,自然走不到print(data)那一步。
修复方案很简单:把请求对象存为类的实例属性,而不是局部变量,让它能保持引用直到请求完成:
// 在你的类(比如ViewController)里定义一个实例变量 var filmRequest: DataRequest? // 在需要发起请求的方法里写逻辑 func loadFilmData() { filmRequest = AF.request("https://swapi.dev/api/films/?format=json") filmRequest?.responseJSON { response in print(response) // 请求完成后可以主动置空释放资源 self.filmRequest = nil } }
另外也可以直接链式调用,不用单独存变量,但要确保整个链式调用的对象不会被提前释放(比如不要在临时闭包或局部作用域里发起请求):
AF.request("https://swapi.dev/api/films/?format=json") .responseJSON { response in print(response) }
内容的提问来源于stack exchange,提问作者dev-lop
相关产品推荐
相关产品推荐

