菜鸟教程小白 发表于 2022-12-11 18:37:59

ios - 无法在 UILabel 中显示我的文本


                                            <p><p>我不知道为什么我不能在我的 UILabel 中打印我的“pocetDatabaze3”。</p>

<p>这是我的代码:</p>

<pre><code>@IBOutlet weak var aktualniPocet: UILabel!
var pocetDatabaze2 = 0
var pocetDatabaze3 = &#34;dfh&#34;

override func viewDidLoad() {
    super.viewDidLoad()

    if let url = NSURL(string: &#34;http://servis.dronysitmp.cz/cteni_baterie.php&#34;) {
      let task = URLSession.shared.dataTask(with: url as URL, completionHandler: { (data, response, error) -&gt; Void in
            //print(data)

            if let pocetDatabaze = NSString(data: data!, encoding: String.Encoding.ascii.rawValue){

                self.pocetDatabaze2 = Int(pocetDatabaze as String)!
                //self.pocetDatabaze3 = String(describing: pocetDatabaze)
            }

      }

      );
      task.resume()
    }

    pocetDatabaze3 = String(pocetDatabaze2 as Int)
    aktualniPocet.text = pocetDatabaze3

}
</code></pre>

<p>在 UILabel 中,它显示“0”,但应该是“25”。加载此 View 后,我还有两个操作。当我使用它们时,它会显示正确的值。剩下的就是:</p>

<pre><code>@IBAction func odecteni(_ sender: UIButton) {
    pocetDatabaze2 = pocetDatabaze2 - 1
    self.pocetDatabaze3 = String(pocetDatabaze2 as Int)
    aktualniPocet.text = pocetDatabaze3
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这是一个线程问题。 <code>URLSession</code> 是异步的,所以你必须在 <code>completionHandler</code> 中更新 UI。</p>

<pre><code>let task = URLSession.shared.dataTask(with: url as URL, completionHandler: { (data, response, error) -&gt; Void in
    //print(data)

    if let pocetDatabaze = NSString(data: data!, encoding: String.Encoding.ascii.rawValue) {

      self.pocetDatabaze2 = Int(pocetDatabaze as String)!
      self.pocetDatabaze3 = String(pocetDatabaze2 as Int)
      DispatchQueue.main.async {
            self.aktualniPocet.text = pocetDatabaze3
      }
    }

})
</code></pre>

<p>您需要调用 <code>DispatchQueue.main</code>,因为您应该在主线程中更新 UI。然后你可以注释掉另外两个调用。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 无法在 UILabel 中显示我的文本,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46075650/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46075650/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 无法在 UILabel 中显示我的文本