Ich habe ein UILabel im Storyboard erstellt, um die Antwort vom Server anzuzeigen. Es dauert jedoch sehr lange Zeit, um die Zeichenfolge vom Server anzuzeigen. Es hat funktioniert, dauert nur 1 Minute.Warum benötigt diese iOS-App sehr viel Zeit, um die Zeichenfolge für UILabel zu öffnen?
Ich verwende print
, um zu überprüfen, ob es eine Verzögerung im Server gibt, aber die Anwendung wird die Antwort im Debugbereich sofort nach dem Öffnen der Anwendung drucken. Ich denke, es sollte App-Problem sein.
Ich überprüfe den Code und sieht gut aus, funktioniert gut. Nur hat ein Verzögerungsproblem. Kann jemand eine Idee haben? (Dies ist eine tvOS App Swift mit 3.0 BTW)
import UIKit
import Foundation
class LoginViewController: UIViewController, UITextFieldDelegate, URLSessionDelegate, URLSessionDataDelegate {
@IBOutlet weak var RandomString: UILabel!
let UUIDValue = UIDevice.current.identifierForVendor!.uuidString
func sendRequest(url: String, parameters: String, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionTask {
let parameterString = parameters
let requestURL = URL(string:"\(url)\(parameterString)")!
print("requestURL = \(requestURL)")
var request = URLRequest(url: requestURL)
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request, completionHandler: completionHandler)
task.resume()
return task
}
override func viewDidLoad() {
super.viewDidLoad()
self.sendRequest(url: "http://www.google.com/api", parameters: UUIDValue, completionHandler:{data, response, error in
print (self.UUIDValue)
guard error == nil && data != nil else {
print("error=\(error)")
return
}
let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(responseString)")
//If app receives "true" response from server, go to Home screen.
if responseString == "true" {
let viewController:UIViewController = UIStoryboard(name: "Main", bundle:nil).instantiateViewController(withIdentifier: "Tab") as UIViewController
self.present(viewController, animated: false, completion: nil)
}
//If app receives "false" response from server, display the response from server.
else {
self.RandomString.text = responseString as String?
}
})
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Wo setzen Sie den Text des Labels ein? Stellen Sie sicher, dass Sie dies im Hauptthread tun. – Connor
Ich füge einfach den kompletten Code in diesen Thread ein, habe gerade festgestellt, dass er unvollständig ist. – Wei