首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sendbird SyncManager通道分页问题

Sendbird SyncManager通道分页问题
EN

Stack Overflow用户
提问于 2021-01-19 15:25:23
回答 1查看 122关注 0票数 1

我在一个原生iOS应用程序中使用Sendbird处理聊天消息。他们有一个附加的SyncManager。其将频道列表和消息本地高速缓存在电话上以用于离线支持。

我正在尝试使用SyncManager的集合对频道列表进行分页。下面是我的代码片段:

代码语言:javascript
复制
func fetchCollection() {
    self.query = SBDGroupChannel.createMyGroupChannelListQuery()
    self.query?.order = .latestLastMessage
    self.query?.limit = 20
    
    self.collection = SBSMChannelCollection(query: query)
    self.collection?.delegate = self
}

func fetchNextPage() {
    // Problem: The `query.hasNext` is never set to `false`!
    guard let query = query, query.hasNext else { return }
    collection?.fetch { error in
        if let error = error {
            self.log("Error: \(error)", level: .debug)
            return
        }

        // Do nothing, as the collection delegate would be notified to the delegate.
    }
}
    
func collection(_ collection: SBSMChannelCollection, didReceiveEvent action: SBSMChannelEventAction, channels: [SBDGroupChannel]) {
    switch action {
    case .insert:
        datasource.insertChannels(channels)
    case .update:
        datasource.moveChannels(channels)
    case .remove:
        datasource.deleteChannels(channels)
    case .move:
        datasource.moveChannels(channels)
    case .clear:
        datasource.clearChannels()
    case .none:
        DispatchQueue.main.async { [weak self] in
            self?.tableView.reloadData()
        }

    default:
        assertionFailure("Undefine action")
        DispatchQueue.main.async { [weak self] in
            self?.tableView.reloadData()
        }
    }
}

问题是query.hasNext从未设置为false。我也尝试过检查collection.query.hasNext,但true也总是如此。

请注意,Sendbird的basic SDK确实将query.hasNext设置为false,因此我可以确定查询是否有下一页,并且我应该进行另一个调用。我想使用SyncManager进行分页。

他们的SyncManager示例应用程序发送下一个页面请求,而不检查是否有下一个页面可用,所以每次用户滚动到底部时,他们都会调用API。我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-01-21 04:08:56

@sunil现在,您每次调用fetchNextPage时都在构建一个新的查询。您需要维护原始查询,才能使hasNext为真。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65787044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档