【发布时间】:2021-07-31 00:18:47
【问题描述】:
我想将从完成处理程序中获得的值作为字符串放入 Text 视图中,但出现错误。这是我尝试做的:
func final(name: String, completion: @escaping (_ message: String)-> Void){
guard let uid = AuthViewModel.shared.userSession?.uid else {return}
Firestore.firestore().collection("users").document(uid).collection("chats").document(name).collection("messages").whereField("read", isEqualTo: false).getDocuments { (snapshot, _) in
guard let documents = snapshot?.documents.compactMap({ $0.documentID }) else {return}
let unread = documents.count
let unreadString = String(unread)
completion(unreadString)
}
}
试着把它写成这样的文本:
Text(model.final(name: name, completion: { (message) in
String(message)
}))
这是我得到的错误
Type '()' cannot conform to 'StringProtocol'; only struct/enum/class types can conform to protocols
【问题讨论】:
-
您已声明完成处理程序返回 Void 因此错误,将返回类型更改为 String
-
并使
completion(unreadString)像return completion(unreadString)一样显式返回
标签: swift swiftui completionhandler