我正在制作一个从解析数据库填充 TableView 的应用程序。问题是每当我滚动时都会有一点滞后。通过一些搜索,我开始意识到问题出在 cellForRowAtIndexPath() 函数中,我在该函数中查询数据库以获取该单元格标签所需的数据。我必须查询那里的数据库,因为我使用单元格的位置来索引我的消息数组,以便获取正确的消息。这是我的 cellForRowAtIndexPath() 函数的主要内容:
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
}
有什么想法吗?
最佳答案
我最终所做的是将查询放在函数之外并在 viewDidLoad() 中运行它,这极大地提高了速度。谢谢你们的帮助:-)
关于ios - UITableView 上的前卫滚动 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30679684/