내 viewcontroller에서 레이블의 극단적 인 느린 채우기로 고민하고 있습니다.viewcontroller의 레이블이 매우 느리게 채워집니다.
스크립트는 사용자 ID를 PHP 스크립트로 보냅니다. To 스크립트는 배열에서 사용자 ID와 관련된 데이터를 검색하여이를 내 애플 리케이션에 json 응답으로 보낸다. 그런 다음 뷰콘의 레이블에 json 배열 (사전)의 해당 데이터가 채워집니다.
"do {}"의 print 문은 콘솔에서 즉시 실행되지만 viewcontroller의 레이블 채우기에는 시간이 오래 걸립니다. self.lblStreet.text = self.loadedStreet를 do {} 바깥에 두지 만 여전히 태스크에서 여전히 느린 결과를 가져옵니다.
class CharDetailViewController: UIViewController {
//Outlets
@IBOutlet weak var lblUID: UILabel!
@IBOutlet weak var lblStreet: UILabel!
//URL to our web service
let URL_GET_DETAILS = "http://somesite.com/script.php"
var passedUID: String!
var loadedStreet: String!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: URL_GET_DETAILS)
lblUID.text = passedUID
let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "POST";
let sendUID = lblUID.text
let postParameters = "sendUID="+sendUID!;
request.httpBody = postParameters.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with:request as URLRequest){
data, response, error in
if error != nil{
print("error is \(error)")
return;
}
do{
let myJSON = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
if let parseJSON = myJSON {
var uid : String!
uid = parseJSON["userid"] as! String?
self.loadedStreet = parseJSON["street"] as! String!
self.lblStreet.text = parseJSON["street"] as! String!
print(uid)
print(self.loadedStreet)
}
}
catch {
print(error)
}
}
task.resume()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}