ios - TableView 数据未显示在 Alamofire post 请求调用 swift 3

标签 ios swift uitableview swift3 alamofire

我正在使用 API 获取用户信息,例如地址。在此应用程序中,用户可以输入多个地址,我按下了一个按钮,它将使该地址成为 tableview 单元格中的默认地址。当我按下按钮以将地址设为默认时,它会使地址成为默认地址,但不会在 tableview 单元格中显示地址。即使我已经使用了 dispatch.main.async()。

我的按钮代码作为默认地址。只是表格单元格在默认完成时不显示数据。

func makeAddressDefault(_ sender: UIButton) {
        let address = addresses[sender.tag]
        let params:Parameters = ["userid": Globals.sharedInstance.user!.id, "addressid": address.id!]
        let url = "/makeaddressdefault?userid=" + Globals.sharedInstance.user!.id
        RestApiManager.sharedInstance.makePostRequest(vc:self, url: url, post:params, successCompletionHandler:{
            (data) in
            self.addresses.removeAll() // array of addresses
            self.reloadAddresses() // in this reload method in last i have added self.tableview.reload()
        }, failureCompletionHandler:{(data) in })
    }

//ReloadAddress方法在这里定义。

 private func reloadAddresses()
    {
        Globals.sharedInstance.user!.addresses.removeAll()
        Globals.sharedInstance.getUserAddresses(vc: self)
        self.addresses = Globals.sharedInstance.user!.addresses

        self.tableView.reloadData()
    }

//这里写的getUserAddresses()方法。

public func getUserAddresses(vc:BaseViewController) {
        if(Globals.sharedInstance.user!.addresses.count == 0)
        {
        let url = "/useraddresses?userid=" + Globals.sharedInstance.user!.id
        RestApiManager.sharedInstance.makeGetRequest(vc:nil, url: url){
            (data) in
            // parse the result as JSON, since that's what the API provides
            do {
                guard let jsonResponse = try JSONSerialization.jsonObject(with: data, options: [])
                    as? [[String: Any?]] else {
                        print("error trying to convert data to JSON")
                        return
                }

                let foodieprofile = jsonResponse[0]
                let addresses = foodieprofile["foodieprofile"] as! [String: Any?]
                let jsonAddresses = addresses["deliveryaddress"] as! [[String: Any?]]

                if(jsonAddresses.count>0 && Globals.sharedInstance.user!.addresses.count==0)
                {

                    for index in 0...jsonAddresses.count-1 {
                        let this_address = jsonAddresses[index]
                        var isdeff = false
                        if let isdef = this_address["isdefault"] as? Bool
                        {
                            isdeff = isdef
                        }
                        let address = Address(id:this_address["_id"] as! String?, name:this_address["name"] as! String?, address:this_address["address"] as! String?, address2:this_address["address2"] as! String?, zone:this_address["zone"] as! String?, city:this_address["city"] as! String?, landmark:this_address["landmark"] as! String?, phone:this_address["phone"] as! String?, isdefault:isdeff)

                        Globals.sharedInstance.user!.addresses += [address]
                    }
                }
            } catch  {
                print("error trying to convert data to JSON")
                return
            }
        }
        }
    }

}

任何帮助将不胜感激。

最佳答案

你需要在 block 内重新加载数据

RestApiManager.sharedInstance.makePostRequest(vc:self, url: url, post:params, successCompletionHandler:{
            (data) in
            self.addresses.removeAll() // array of addresses
           Globals.sharedInstance.user!.addresses.removeAll()
           Globals.sharedInstance.getUserAddresses = data // you need to assign your data it is for suggestion only
           Globals.sharedInstance.getUserAddresses(vc: self)
          self.addresses = Globals.sharedInstance.user!.addresses
        self.tableView.reloadData()
        }, failureCompletionHandler:{(data) in })

关于ios - TableView 数据未显示在 Alamofire post 请求调用 swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43678631/

相关文章:

ios - OpenSSL 与 FIPS 交叉编译 iOS armv7

ios - Swift Firebase 在 child 身上获得值(value)

ios - 在主线程上链接 UITableview 更新

ios - 使用 Storyboard的 "inner" View 和 UITableViewCell 的内容 View 之间剩余垂直间距的原因是什么?

ios - 如何让 List of String 的每个元素都可以点击?

ios - didRegisterForRemoteNotificationsWithDeviceToken 从未在特定设备上调用

json - 将 Json 数据附加到数组 - Firebase/Swift

ios - 为什么我的 UITextView 没有显示在我的 Swift/iOS 应用程序的自定义表格单元格中?

ios - UISplitViewController 中的导航 Controller 为底栏留出空间

ios - 如何对 UIPageViewController 处理的页面内的容器进行动画处理,并且该动画与页面滑动(页面更改)相关?