0

Parse からメッセージを取得するために「Chat」クラスにクエリを実行しています。次に、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)

そして、フェッチと 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 に答える