1:appID :mOg90SURiMp7pkUNCH7VfRBp 2:平台:iOS: 13.0 3:sdk最新

private func initLiveQuery(){
print("init Live")
do {
let query = LCQuery(className: "Todo")

        let lQuery  = try LiveQuery(query: query, eventHandler: { (liveQuery, event) in
            switch event {
            case .create(object: let object):
                print(object["title"] as Any) // 更新作品集
            case .update(object: _, updatedKeys: _):
                print("对象被更新。")
            default:
                break
            }
        })
        lQuery.subscribe { (result) in
            print("sdf\(result)")
            switch result {
            case .success:
                print("success")
            case .failure(error: let error):
                print("failure")

                print(error)
            }
        }
    } catch {
        print("error")
        print(error)
    }
    
}

请问下有没有swift的livequery的Demo

因为 LiveQuery 实例在函数返回后被释放了,你需要用全局变量持有 LiveQuery 实例。

我用的是swiftui, 代码改成
@State var liveQuery :LiveQuery = nil
private func initLiveQuery(){
print("init Live")
do {
let query = LCQuery(className: "Todo")

        if self.liveQuery == nil {
                self.liveQuery = try LiveQuery(query: query, eventHandler: { (liveQuery, event) in
                switch event {
                case .create(object: let object):
                    print(object["title"] as Any) // 更新作品集
                case .update(object: _, updatedKeys: _):
                    print("对象被更新。")
                default:
                    break
                }
            })
        }

        if self.liveQuery != nil {
            print("subscribe")
            self.liveQuery?.subscribe { (result) in
                print("sdf\(result)")
                switch result {
                case .success:
                    print("success")
                case .failure(error: let error):
                    print("failure")

                    print(error)
                }
            }
        }

    } catch {
        print("error")
        print(error)
    }
    
}

订阅时候报错:
LeanCloud.LCError(code: 1, reason: Optional("Invalid where."), userInfo: nil, underlyingError: nil))

query 的条件不合法,请修改为有效的条件。

添加了查询
query.whereKey("createdAt", .descending)
还是提示一样的"error": "Invalid where." 错误

        let query = LCQuery(className: "Todo")
        query.whereKey("createdAt", .descending)

这个我用来查询todo列表,是正常的,但是放到LiveQuery里面就是Optional("Invalid where.")错误,不明白你说的条件不合法具体错误是哪里?

LiveQuery 不支持 "createdAt" + descending 。

        let query = LCQuery(className: "Todo")
        self.liveQuery = try LiveQuery(query: query, eventHandler: { (liveQuery, event) in })

ok,我的目的是这个Todo表数据有变化就订阅,就跟官网的需求一样,为什么也是报错啊。。官方没有提供一个demo吗?

这个 repo5 里的 RuntimeTests-iOS target 是一个 LiveQuery 的 demo,您可以试着了解一下。

可以具体说说吗?我是 swiftUi 新手,想试试这个 liveQuery,但我也和楼主一样无法得到更新数据。
我把 eventHandler 定义在 ObservableObject 里面也无效。
把这个 liveQuery 定义在 ObservableObject 也是无效的。
求帮助。

您好,收到您的反馈,您的问题我们调查后会在您下面的帖子下回复,谢谢。

1 人赞了这个帖子.