十分感谢你的代码,有个小问题,因为之前没有写过订阅逻辑,如果很白痴的问题还望见谅
按你的代码逻辑改动后,的确提示了订阅成功,但是 捕捉事件的时候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 的工作机制不是很理解,如果简单帮忙介绍下就万分感谢了!