2015-12-12 78 views
0

我做一個查詢檢索解析一些數據,我有叫行使外部類的查詢,而不是在tableViewController和代碼如下:查詢與分析是太慢

// LOAD 
var arrayExercise:[Exercise] = [Exercise]() 


func loadAll() -> [Exercise] { 

    // Esercizio di load 
    let exerciseName:Exercise = Exercise() 
    let query = PFQuery(className:"Exercise") 
    query.whereKey("username", equalTo:(PFUser.currentUser()?.username)!) 


    query.findObjectsInBackgroundWithBlock { 
     (objects: [PFObject]?, error: NSError?) -> Void in 
     if error == nil { 
      // The find succeeded. 
      print("Successfully retrieved \(objects!.count) scores.") 
      // Do something with the found objects 
      if let objects = objects { 
       for object in objects { 

        // Add the name of the Exercise into the array 
        let text:String? = (object)["name"] as? String 

        exerciseName.setNome(text!) 

        self.arrayExercise.append(exerciseName) 
       } 
      } 
     } else { 
      // Log details of the failure 
      print("Error: \(error!) \(error!.userInfo)") 
     } 
    } 
    return arrayExercise 
} 

而在TableViewController中,我在viewDidLoad中調用了這個方法,但是我注意到查詢完成之前的tableView加載並且結果爲空!我試圖將tableView.reloadData()添加到查詢中,但它不起作用!我如何加載查詢,然後顯示tableView?謝謝!

+0

'reloadData'方法通常是正確的方法。 – luk2302

+0

@ luk2302但我在一個外部類,而不是在uitableview上,我怎麼能從另一個類reloadData? –

回答

0

我有一個類似的問題在Android中,我不知道它是否可以幫助,但在我的情況下,這是因爲查詢是在後臺完成的,所以它沒有等待查詢完成,因此預期該數據將不會出現,我解決它不使用查詢的背景,而不是使用一個「正常」的查詢,在Android中是這樣的:

ParseQuery<ParseObject> resultsitems = ParseQuery.getQuery("ClassName").whereEqualTo ("Column", x); 

    try { 
     objects=resultsitems.find(); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

我不知道如何解析對於IOS的工作,但我的猜測是類似的,所以嘗試尋找正確的語法,並希望它會按你的意願工作。