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は、他のクエリに対して正常に機能します。