当前位置: 首页 > 面试题库 >

使用Alamofire快速关闭

宰父俊民
2023-03-14
问题内容

我正在对服务器进行API调用。我正在利用Alamofire来解决这个问题。我正在尝试创建一个使用Alamofire的GET函数返回基于自定义类的对象的函数,该类包含此GET函数提供的各种输出。

我不清楚执行此操作的方式。

这是我的自定义类,其中包含有关响应的详细信息:

import Foundation

class ResponsePackage {

    var success = false
    var response: AnyObject? = nil
    var error: NSError? = nil

}

在另一个类中,我具有以下功能

func get(apiEndPoint: NSString) -> ResponsePackage {

    let responsePackage = ResponsePackage()

        Alamofire
            .request(.GET, apiEndPoint)
            .responseJSON {(request, response, JSON, error) in
                responsePackage.response = JSON
                responsePackage.success = true
                responsePackage.error = error
        }

    return responsePackage

}

这将返回,nil因为在return执行之前对服务器的调用未完成。我知道我应该能够使用闭包来做到这一点,但是我不确定如何构造它。


问题答案:

之间的代码{}等同于Objective-C中的代码块:这是异步执行的代码块。

您所犯的错误是您放置return语句的地方:当您启动请求时,{}直到框架收到响应后,代码才执行,因此,return到达该语句时,机会仍然没有响应。您可以简单地移动以下行:

return responsePackage

在闭包内部,因此func仅在收到响应后才返回。这是一种简单的方法,但并不是真正理想的方法:您的代码将卡在等待答案的过程中。最好的方法也是使用闭包。这看起来像:

   func get(apiEndPoint: NSString, completion: (response: ResponsePackage) -> ()) -> Bool {

        let responsePackage = ResponsePackage()
        Alamofire
            .request(.GET, apiEndPoint)
            .responseJSON {(request, response, JSON, error) in
                responsePackage.response = JSON
                responsePackage.success = true
                responsePackage.error = error

                completion(response: responsePackage)
        }
    }


 类似资料:
  • 问题内容: 我正在使用以下代码将单个图像上传到服务器: 如何通过编辑此代码在单个参数中上传多张图片? 问题答案: Swift 3 只需在图像上传参数中使用“ []”即可使其成为图像数组。

  • 我正在关注一个在线课程(从2016年12月开始),并在此屏幕截图中收到错误。 这是我的代码: // // FirebaseManager.swift 多谢你的帮忙

  • 我用这个代码。 我遇到了些问题 阿拉莫菲尔1.2版。1:没问题 Alamofire版本1.2.2 错误:可选(错误域=NSURErrorDomain代码=-999“取消”用户信息=0x7feb92c434f0{NSErrorFailingURLKey=https://test.com/api/list/,NSLocalizedDescription=取消,NSERRORFAILINGURSTRIN

  • 问题内容: 我从事ios开发已经有几个月了,渴望在我的编程模式中实现新的东西。 现在,我正在学习闭包,并且对其语法了解甚少,知道可以将其用于代替回调。以及在某些UIViewAnimation中实现和排序。 但是我真的想知道它的用途。也就是说,在基本编程中应该在哪里使用闭包。就像我们要从孩子向父母发送信息时使用委托一样。因此,在日常的快速编程中可以使用的有关其实际的任何解释或简短示例都会有所帮助?

  • 问题内容: 这是我的代码,但显示了进度。这段代码有什么错误吗?请提供一些想法来解决此问题,或者提供一些与此相关的链接。 问题答案: 更新的答案: 要关闭ProgressHUD:

  • 我对python是全新的,我正在尝试在其中实现quicksort。有人能帮我完成我的代码吗? 我不知道如何连接这三个数组并打印它们。