2
我有兩個按鈕在視圖控制器和它們下面的表視圖。當兩個按鈕中的一個按下不同的過濾器參數時,表格視圖被刷新。實際上,當表格視圖被加載,然後點擊另一個按鈕時,它工作正常,表格被刷新。但是,當您在表格視圖中滾動並且滾動仍在進行時,您按下另一個按鈕時,出現「索引超出範圍」錯誤。試了很多東西來解決它,但沒有辦法。有任何想法嗎?我使用解析作爲免費會員資格。我的代碼的重要部分是如下:「索引超出範圍」雖然刷新表 - 斯威夫特
@IBAction func filterType0_clicked(sender: AnyObject) {
if filterTypeVar != 0 {
self.activityIndicator.startAnimating()
self.waitView.hidden = false
filterTypeVar = 0
refreshResults()
}
}
@IBAction func filterType1_clicked(sender: AnyObject) {
if filterTypeVar != 1 {
self.activityIndicator.startAnimating()
self.waitView.hidden = false
filterTypeVar = 1
refreshResults()
}
}
func refreshResults() {
resultsNameArray.removeAll(keepCapacity: false)
resultsUserNameArray.removeAll(keepCapacity: false)
resultsObjectIdArray.removeAll(keepCapacity: false)
var query = PFQuery(className: 「posts」)
query.whereKey("userName", containedIn: usersArray)
if filterTypeVar == 0 {
println("no filter")
}
else {
query.whereKey("Type", equalTo: filterTypeVar)
}
query.addDescendingOrder("createdAt")
query.limit = 10
query.findObjectsInBackgroundWithBlock {
(objects:[AnyObject]?, error:NSError?) -> Void in
if error == nil {
for object in objects! {
self.resultsNameArray.append(object.objectForKey("profileName") as! String)
self.resultsUserNameArray.append(object.objectForKey("userName") as! String)
self.resultsObjectIdArray.append(object.objectId as String!)
self.resultsTable.reloadData()
}
if self.resultsNameArray.isEmpty {
self.resultsTable.hidden = true
}
else {
self.resultsTable.hidden = false
}
self.activityIndicator.stopAnimating()
self.waitView.hidden = true
}
}
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return resultsNameArray.count
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 127
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:mainCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! mainCell
cell.profileLbl.setTitle(self.resultsNameArray[indexPath.row], forState: UIControlState.Normal)
cell.usernameLbl.text = self.resultsUserNameArray[indexPath.row]
cell.objectid.text = self.resultsObjectIdArray[indexPath.row]
return cell
}
還是一樣,我猜陣列的數量不符合與numberofrowsinsection部分。 – saner
我放了一些println()來理解問題的起點。錯誤在「query.limit = 10」部分之後開始。那裏顯示了最後一個println。 – saner
我剛剛注意到,在獲取數據之前清除了數組。由於提取是異步運行的,因此一旦獲得數據,就應該清除數組。那從那以後呢?查看更新的代碼。 – whyceewhite