when i try to filter the results on recentMessages, it does not allow me and i get this error
Trailing closure passed to parameter of type ‘Predicate’ that does not accept a closure
This is the method i try to use:
<code> ```
func filterMessages(for userId: String) {
self.filteredMessages = self.recentMessages.filter { $0.senderId == userId || $0.receiverId == userId }
}
```
</code>
<code> ```
func filterMessages(for userId: String) {
self.filteredMessages = self.recentMessages.filter { $0.senderId == userId || $0.receiverId == userId }
}
```
</code>
```
func filterMessages(for userId: String) {
self.filteredMessages = self.recentMessages.filter { $0.senderId == userId || $0.receiverId == userId }
}
```
This is RecentMessage:
<code>struct RecentMessage: Hashable, Identifiable {
var id: String { documentId }
let documentId: String
let timestamp: Timestamp
let senderId, receiverId, content : String
init(documentId: String, data: [String : Any]) {
self.documentId = documentId
self.senderId = data["fromId"] as? String ?? ""
self.receiverId = data["toId"] as? String ?? ""
self.content = data["content"] as? String ?? ""
self.timestamp = data["timestamp"] as? Timestamp ?? Timestamp(date: Date())
}
}
```
i tried this way. Then i dont get error but when i put a breakpoint here it does not hit this line
**return message.receiverId == userId || message.senderId == userId**
```
func filterMessages(for userId: String) {
self.filteredMessages = self.recentMessages.filter { (message: RecentMessage) -> Bool in
return message.receiverId == userId || message.senderId == userId
}
}
```
</code>
<code>struct RecentMessage: Hashable, Identifiable {
var id: String { documentId }
let documentId: String
let timestamp: Timestamp
let senderId, receiverId, content : String
init(documentId: String, data: [String : Any]) {
self.documentId = documentId
self.senderId = data["fromId"] as? String ?? ""
self.receiverId = data["toId"] as? String ?? ""
self.content = data["content"] as? String ?? ""
self.timestamp = data["timestamp"] as? Timestamp ?? Timestamp(date: Date())
}
}
```
i tried this way. Then i dont get error but when i put a breakpoint here it does not hit this line
**return message.receiverId == userId || message.senderId == userId**
```
func filterMessages(for userId: String) {
self.filteredMessages = self.recentMessages.filter { (message: RecentMessage) -> Bool in
return message.receiverId == userId || message.senderId == userId
}
}
```
</code>
struct RecentMessage: Hashable, Identifiable {
var id: String { documentId }
let documentId: String
let timestamp: Timestamp
let senderId, receiverId, content : String
init(documentId: String, data: [String : Any]) {
self.documentId = documentId
self.senderId = data["fromId"] as? String ?? ""
self.receiverId = data["toId"] as? String ?? ""
self.content = data["content"] as? String ?? ""
self.timestamp = data["timestamp"] as? Timestamp ?? Timestamp(date: Date())
}
}
```
i tried this way. Then i dont get error but when i put a breakpoint here it does not hit this line
**return message.receiverId == userId || message.senderId == userId**
```
func filterMessages(for userId: String) {
self.filteredMessages = self.recentMessages.filter { (message: RecentMessage) -> Bool in
return message.receiverId == userId || message.senderId == userId
}
}
```
2