无法将类型“()”的值转换为预期的参数类型“(() -> Void)?”
Cannot convert value of type '()' to expected argument type '(() -> Void)?'
我遇到了这样的问题,请问大家有什么办法解决吗?
Xcode 11.2,SwiftUI
.onAppear(perform: self.sessionChat.loadMsgInChatRoom(chatRoom: chatRoom)) //then an error
func loadMsgInChatRoom(chatRoom: String) {
let db = Firestore.firestore()
db.collection("chatRoom").document(chatRoom).collection("msg")
.addSnapshotListener { (querySnapshot, err) in
if err != nil {
print((err?.localizedDescription)!)
return
}
for i in querySnapshot!.documentChanges {
if i.type == .added {
let user = i.document.get("user") as! String
let msg = i.document.get("msg") as! String
let idUser = i.document.get("idUser") as! String
let dateMsg = i.document.get("dateMsg") as! String
let id = i.document.documentID
self.msgs.append(dataMessges(id: id, user: user, msg: msg, idUser: idUser, dateMsg: dateMsg))
}
}
}
}
.onAppear
需要一个闭包,所以我认为需要大括号
.onAppear(perform: { self.sessionChat.loadMsgInChatRoom(chatRoom: chatRoom) } )
或更简单的方法:
.onAppear {
self.sessionChat.loadMsgInChatRoom(chatRoom: chatRoom)
}
我遇到了这样的问题,请问大家有什么办法解决吗? Xcode 11.2,SwiftUI
.onAppear(perform: self.sessionChat.loadMsgInChatRoom(chatRoom: chatRoom)) //then an error
func loadMsgInChatRoom(chatRoom: String) {
let db = Firestore.firestore()
db.collection("chatRoom").document(chatRoom).collection("msg")
.addSnapshotListener { (querySnapshot, err) in
if err != nil {
print((err?.localizedDescription)!)
return
}
for i in querySnapshot!.documentChanges {
if i.type == .added {
let user = i.document.get("user") as! String
let msg = i.document.get("msg") as! String
let idUser = i.document.get("idUser") as! String
let dateMsg = i.document.get("dateMsg") as! String
let id = i.document.documentID
self.msgs.append(dataMessges(id: id, user: user, msg: msg, idUser: idUser, dateMsg: dateMsg))
}
}
}
}
.onAppear
需要一个闭包,所以我认为需要大括号
.onAppear(perform: { self.sessionChat.loadMsgInChatRoom(chatRoom: chatRoom) } )
或更简单的方法:
.onAppear {
self.sessionChat.loadMsgInChatRoom(chatRoom: chatRoom)
}