【问题标题】:Need to return json obj so I display in list view getting back nil需要返回 json obj 所以我在列表视图中显示返回 nil
【发布时间】:2015-05-29 15:04:51
【问题描述】:

我对 swift 很陌生。我试图返回 JSON 并在列表视图中查看它,我无法从 AppApi 类中获取 JSON 以返回到我的 viewDidLoad()。任何帮助,将不胜感激。

在此先感谢您。 特力

  override func viewDidLoad() {
    super.viewDidLoad()


    let api = AppAPI(token:self.toPassToken)
    var test  = api.getOrders()

    println("why does test come back as an empty array")
    println(test)
    println(test.count)
}


class AppAPI {
    var token: String
    let apiEndPoint = "endpoint"
    let apiUrl:String!
    let consumerKey:String!
    let consumerSecret:String!
    var returnData = [:]

    init(token:String){
        self.apiUrl = “hidden-for-security”
            self.consumerKey = "token"
        self.consumerSecret = "my consumer secret"
        self.token = token
    }

    func getOrders() -> [JSON] {
        return makeCall("contacts")
    }

    func makeCall(section:String) -> [JSON] {

        let params = ["token":"\(self.token)"]

        Alamofire.request(.POST, "\(self.apiUrl)", parameters: params)

            .responseJSON { (request, response, json, error) -> Void in
                println("error \(request)")
                self.returnData = json! as! NSDictionary




        }

        return results!
    }
}

【问题讨论】:

  • 我看不出这段代码是如何编译的,它包括从未定义过的return results!

标签: ios json swift callback return


【解决方案1】:

在您的makeCall(section:String) -> [JSON] 函数中,您将返回results!results 在这个函数中设置在哪里?

您的意思是返回returnData 吗?

【讨论】:

    【解决方案2】:

    Alamofire.request 执行异步请求; responseJSON 将在未来某个时间请求完成时执行该闭包。

    您几乎肯定不想在此请求完成之前阻止您的 viewDidLoad 方法,因为这会阻止您的主线程并使应用程序无响应。而是在viewDidLoad 中启动请求,并在请求完成时做出反应。 您可以这样做的一种方法是将闭包传递给getOrders,您可以在请求完成时执行该闭包。

    【讨论】:

    • 你能提供和例子吗?我现在正在查找闭包。感谢您的帮助。
    • 重要的一点是您将启动请求与接收响应分离,并意识到您不能只是等待响应。你如何实现这实际上取决于你希望你的应用程序做什么,一个简单的版本可能是你的viewDidLoad 提供一个异步回调块(`api.getOrders {orders in /*...*/})。您的问题没有描述您打算如何使用该 JSON 响应。
    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2019-04-28
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多