繁体   English   中英

使用rxSwift和alamofire调用Api Api,视图显示比获得API响应更快

[英]Call Async Api using rxSwift and alamofire, the view show up more quickly than getting api response

我有关于使用异步Api更新View的问题。
如何防止这种情况并确保标签没有任何内容。
它使我的标签无所作为。
谢谢。

更新代码:

var memberCount:String = ""

func updateNavigation() {

    navigationItem.titleView = setTitleWitImage(title: self.name + "(" + self.memberCount + ")", titleImage: #imageLiteral(resourceName: "titleImage"))
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    var parameters:[String:Any] = [String:Any]()
    parameters["id"] = self.id

    API.member.get( parameters,{ json in

        guard json.isEmpty == false else {

            print("nulllllllllllll")
            return
        }

        let number:Int = json.count
        self.memberCount = String(number)
        print("*\(self.memberCount)")

        DispatchQueue.main.async(execute: { () -> Void in
            self.updateNavigation()
        })
    })
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    //updateNavigation()
}

抱歉,我使用@Sandeep Bhandari答案,这将使我的导航标题出现另一个问题。
我在这里录制问题视频。

问题视频在这里,谢谢!

API.member.get( parameters,{ json in

        guard json.isEmpty == false else {

            print("nulllllllllllll")
            return
        }

        let number:Int = json.count
        self.memberCount = String(number)
        self.updateNavigation()
    })

这应该可以解决您的问题

原因:get是一个异步调用,甚至在get收到响应之前都会调用viewDidAppear。 因此,一旦获得接收响应更新UI

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM