我在 SwiftUI 项目中使用 ParseLiveQuery-iOS-OSX 库从我的 Parse Server 接收实时服务器更新。我在网上密切关注各种来源。以下是我当前的视图模型:
class InitializationViewModel: ObservableObject{
var subscription: Subscription<PFObject>?
var subscriber = Client(server: "ws://xx.xx.xx.xx", applicationId: "xxxx", clientKey: "]")
let query : PFQuery<PFObject> = Chats.query()!.whereKey("users", contains: "user1")
init(){
self.subscribeToChats()
}
func subscribeToChats() {
self.subscriber.shouldPrintWebSocketLog = false
self.subscriber.shouldPrintWebSocketTrace = true
self.subscription = subscriber.subscribe(query).handle(Event.created) { query, object in
print(object)
}
}
}
自从我打开客户端跟踪后,我就可以看到来自我的服务器的传入 json 实时查询对象,所以这部分工作正常。但是,我是事件处理程序,不会被触发。
我做了一些进一步的调查,发现错误出现在ParseLiveQuery/ClientPrivate.swift的第23行,
guard let object = PFDecoder.object().decode(objectDictionary) as? T else {
throw LiveQueryErrors.InvalidJSONObject(json: objectDictionary, details: "cannot decode json into \(T.self)")
}
解码部分(
PFDecoder.object().decode(objectDictionary)
)工作正常。但是当它试图将解码后的对象转换为类型T
时出现错误,在我的例子中是类型PFObject
(类型defhere)。我检查了解码对象确实包含一个PFObject
的所有必填字段。所以我有点想知道为什么会发生这种情况/是否有办法解决这个问题。
感谢任何帮助