0

我正在查询“聊天”类以从 Parse 中获取消息。然后使用 JSQMessagesViewController 显示获取的消息。

一切正常,直到我尝试使用以下方法缓存查询:

    query.cachePolicy = .CacheThenNetwork

问题是结果没有被缓存,并且query.hasCachedResult总是返回 false。

查询如下:

    let query = PFQuery(className: PF_CHAT_CLASS_NAME)
    query.whereKey(PF_CHAT_GROUPID, equalTo: forGroupId)
    query.whereKey(PF_CHAT_DELIVERTIME, lessThan: NSDate())
    query.includeKey(PF_CHAT_USER)
    query.orderByDescending(PF_CHAT_DELIVERTIME)
    query.limit = 50
    query.cachePolicy = .CacheThenNetwork

    if query.hasCachedResult{
        print("yes")
    }
    else{
        print("no")
    }

    query.findObjectsInBackgroundWithBlock(completionBlock)

fetch 和 JSQMessagesViewController 位在这里完成:

   ParseWrapper.getChatAvailable(forGroupId: groupId){

            (objects, error) -> Void in
            if error == nil {

                self.messages.removeAll()
                self.users.removeAll()

                for object in (objects as [PFObject]!).reverse() {

                    self.addMessage(object)

                }
                if objects!.count > 0 {

                    self.tableViewScrollToBottom(true)


                }
                self.tableView.reloadData()
                self.refreshControl.endRefreshing()


            } 
        }

有没有人知道这有什么问题?.CacheThenNetwork适用于其他查询。

4

1 回答 1

0

所以,我发现了问题,它是带有日期参数的这一行:

query.whereKey(PF_CHAT_DELIVERTIME, lessThan: NSDate())

有关更多详细信息,请参阅此答案... https://stackoverflow.com/a/30683459/1250367

于 2016-03-04T17:44:41.013 回答