JSON'u aldıktan sonra tablodaki bazı verileri göstermeye çalışıyorum. Ancak, tableView.reloadData()
kullanılarak başarısız oldu. Menü gecikmesi.swift NSURLSession POST isteğinden sonra verileri yeniden yükleme zamanlaması nedir?
Durumum, tabloView'in JSON'u alması 14-20 saniye sonra verileri yeniden yükleyeceğidir, ancak kullanıcı tabloyu etkinleştirdiğinde verileri hemen yeniden yükleyecektir.
Swift:
func getJson(word: String){
let url: NSURL = NSURL(string: "MyPHP.php")!
let session = NSURLSession.sharedSession()
let request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
request.HTTPMethod = "POST"
request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData
let bodydata = "label=\(word)"
request.HTTPBody = bodydata.dataUsingEncoding(NSUTF8StringEncoding)
if bodydata != " " {
let task = session.dataTaskWithRequest(request) {
(data, response, error) -> Void in
let httpResponse = response as! NSHTTPURLResponse
let statusCode = httpResponse.statusCode
if(statusCode == 200) {
self.libraryArray.removeAll()
do{
let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments)
print(json)
if let book = json["Book"] as? [[String: AnyObject]]{
for books in book {
if let BookName = book["Name"] as? [String: AnyObject] {
let name = BookName["name"] as? String
let author = BookName["author"] as? String
let bookDict = [
"name": name,
"id": id,
"author": author]
self.libraryArray.append(bookDict)
self.tableView.reloadData() // has 14- 20 seconds delay, but the JSON has already received
}
}
}
}catch {
print("error:\(error)")
}
}
}
task.resume()
// self.tableView.reloadData() if i try to reload here, it will not be executed.
}
}
@IBAction func Next(sender: AnyObject) {
self.getJson("someString")
//self.tableView.reloadData() if i try to reload here, it will be fail.
}
gecikme sorun nedir
? Nasıl çözeceksin? tableView öğesini yeniden yüklemek için doğru zamanlama nedir?
üzgün ile
self.tableView.reloadData()
, senin yöntem yeniden edemez verileri değiştirin. –