0
我正在製作一個應用程序,從解析數據庫中填充表視圖。問題是每當我滾動時都會有一點滯後。通過一些搜索,我意識到問題在於cellForRowAtIndexPath()函數,我正在查詢數據庫以獲取該單元標籤所需的數據。我必須在那裏查詢數據庫,因爲我使用單元格的位置來索引我的消息數組,以獲取正確的消息。這是我的cellForRowAtIndexPath()函數的肉:前沿UITableView上滾動 - iOS
if (path.row < messagesArray.count) {
var message = messagesArray[path.row]
var dateFormat = NSDateFormatter()
var query = PFQuery(className: "Messages")
query.whereKey("messageID", equalTo: message.messageID)
var first = query.getFirstObject()
if (message.senderID == loggedInUserID) {
cell.nameLabel?.text = "I said"
} else {
queryO?.whereKey("objectId", equalTo: message.senderID)
var second = queryO?.getFirstObject()
var name = second!.objectForKey("FIRST") as! String
var middle = second!.objectForKey("MIDDLE") as! String?
var last = second!.objectForKey("LAST") as! String
if (middle != nil) {
cell.nameLabel?.text = name + " " + middle! + " " + last
} else {
cell.nameLabel?.text = name + " " + last
}
}
cell.messageLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
cell.messageLabel?.text = message.messageText
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy 'at' h:mm a" // superset of OP's format
let str = dateFormatter.stringFromDate(first!.objectForKey("TIME") as! NSDate)
cell.senderLabel?.text = str
}
任何想法?
對Parse進行查詢的原因是什麼?你已經有消息列表。甚至查詢本地數據庫也是個不錯的主意,但網絡真的是一個阻礙。嘗試使用網絡調節器將您的應用放在移動網絡上。 –
你應該從Parse預取所有的消息數據 - 或者至少是一個合理的子集,當你需要向下滾動時獲取更多的數據 – Paulw11
我同意std.denis,並且我注意到甚至還有第二個解析查詢(? ),query0。這些查詢是同步的,需要很長時間。你應該在這個方法之外執行這些查詢,並且執行異步操作。您應該在本地存儲結果並使用cellForRowAtIndexPath中的本地存儲 –