【问题标题】:Edgy Scrolling on UITableView - iOSUITableView 上的前卫滚动 - iOS
【发布时间】:2015-06-06 06:24:01
【问题描述】:

我正在制作一个从解析数据库填充表视图的应用程序。问题是每当我滚动时都会有一点延迟。通过一些搜索,我意识到问题出在 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
    }

有什么想法吗?

【问题讨论】:

  • 查询 Parse 的原因是什么?您已经有了消息列表。甚至查询本地数据库也是个坏主意,但网络确实是一个阻碍。尝试使用 Network Conditioner 让您的应用在移动网络上崩溃。
  • 您应该预先从 Parse 中获取所有消息数据 - 或者至少是一个合理的子集,如果需要,在向下滚动时获取更多信息
  • 我同意 std.denis,我注意到甚至还有第二个解析查询 (?),query0。这些查询是同步的并且需要很多时间。您应该在此方法之外执行这些查询,并异步执行它们。您应该将结果存储在本地并使用 cellForRowAtIndexPath 中的本地存储

标签: ios uitableview swift parse-platform


【解决方案1】:

我最终做的是将查询放在我的函数之外并在我的 viewDidLoad() 中运行它,这大大提高了速度。谢谢你们的帮助:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多