iOS APP,swift liveQuery 订阅后未接收到数据更新

swift 开发 iOS APP,按文档所示,在 viewdidload中方法添加了 订阅和更新,可是貌似没有成功,麻烦帮忙解答下,是我的使用方式不对吗?感谢。

override func viewDidLoad() {
        super.viewDidLoad()
        do {
            let query = LCQuery(className: "Post")
            query.whereKey("updatedAt", .descending)
            query.limit = 10
            let liveQuery = try LiveQuery(query: query, eventHandler: { (liveQuery, event) in })
            liveQuery.subscribe { (result) in
                switch result {
                case .success:
                    os_log("订阅成功", log: OSLog.default, type: .debug)
                    break
                case .failure(error: let error):
                    print(error)
                }
            }
        } catch {
            print(error)
        }
        
        do {
            let query = LCQuery(className: "Post")
            liveQuery = try LiveQuery(query: query, eventHandler: { (liveQuery, event) in
                switch event {
                case .create(object: let object):
                    print("有对象创建")
                    
                case .update(object: let object, updatedKeys:let updatedKeys):
                    print("对象被更新。")
                    
                case .enter(object: let object, updatedKeys: let updatedKeys):
                    print("对象进入。")
                    print(object as Any)
                    print(updatedKeys as Any)
                    
                case .leave:
                    print("leave")
                    
                case .delete:
                    print("对象被删除了")
                    
                default:
                    break
                }
            })
        } catch {
            print(error)
        }
}

十分感谢你的代码,有个小问题,因为之前没有写过订阅逻辑,如果很白痴的问题还望见谅
按你的代码逻辑改动后,的确提示了订阅成功,但是 捕捉事件的时候console有显示下面信息,可是下面这行代码貌似没有执行。

case .create(object: let object):
print("有对象创建")

下面是创建对象的时候console的信息

------ BEGIN LeanCloud In Command
<Starscream.WebSocket: 0x7fd54953c510>
LeanCloud.IMGenericCommand:
cmd: data
appId: "tJ5Q4aLf8JlaDK8JrUIB9jjE-gzGzoHsz"
installationId: "livequery-4e38a453-e454-4daa-9feb-d9cc95ec25b4"
service: 1
dataMessage {
  ids: "VmKD0EY7QESpGdyZz_Mn5A"
  msg {
    data: "{\"op\":\"create\",\"object\":{\"updatedAt\":\"2019-10-12T11:10:03.671Z\",\"content\":\"内容\",\"objectId\":\"5da1b48bc05a800073e1efc0\",\"createdAt\":\"2019-10-12T11:10:03.671Z\",\"title\":\"sadfasdf\",\"id\":42,\"userId\":\"D0FC7C0B-5DEF-4938-A042-CFB06BE16D9D\",\"className\":\"Post\"},\"query_id\":\"7ee4aa4db297dfe663ee85dd99628b1e\"}"
  }
}
------ END

改动后的代码

do {
            let query = LCQuery(className: "Post")
            query.whereKey("id", .greaterThan(1))
            let liveQuery1 = try LiveQuery(query: query, eventHandler: { (liveQuery, event) in
                switch event {
                case .create(object: let object):
                    print("======create")
                case .delete(object: let object):
                     print("======delete")
                case let .enter(object: object, updatedKeys: updatedKeys):
                     print("======enter")
                case let .leave(object: object, updatedKeys: updatedKeys):
                    print("======leave")
                case let .update(object: object, updatedKeys: updatedKeys):
                     print("======update")
                default:
                    break
                }
                print(event)
            })
            
            DispatchQueue.global().async {
                let group = DispatchGroup()
                
                group.enter()
                liveQuery1.subscribe(completion: { (result) in
                    assert(Thread.isMainThread)
                    group.leave()
                    switch result {
                    case .success:
                        print("订阅成功")
                        break
                    case .failure(error: let error):
                        print(error)
                    }
                })
            
                group.wait()
                DispatchQueue.main.async {
                    print("tableView.isUserInteractionEnabled = true")
                }
            }
            
            
        } catch {
            print(error)
        }

还有 DispatchQueue.main.async 的工作机制不是很理解,如果简单帮忙介绍下就万分感谢了!

初步判断是您没有理解 ARC 内存机制,建议您先熟悉 Swift 或者 iOS 开发的基础知识。

好的,我先补补去,whatever,多谢啦!