[英]Why do 2 messages appear when I press the send button in JSQMessagesViewController
Here is my didpresssend logic - 2 messages appear in the view, but when the page is refreshed, there is actually only 1 message in my message array. 这是我的didpresssend逻辑-视图中显示2条消息,但是刷新页面时,我的消息数组中实际上只有1条消息。
- (void)didPressSendButton:(UIButton *)button withMessageText:(NSString *)text senderId:(NSString *)senderId senderDisplayName:(NSString *)senderDisplayName date:(NSDate *)date {
JSQMessage *message = [[JSQMessage alloc] initWithSenderId:senderId senderDisplayName:senderDisplayName date:date text:text];
NSDictionary *firebaseMessage = @{@"avatar":self.avatarURL,@"handle":senderDisplayName,@"message":text,@"profileId":self.profID,@"timestamp":[self getTimestamp]};
[[self.threadRef childByAutoId] setValue:firebaseMessage withCompletionBlock:^(NSError * _Nullable error, FIRDatabaseReference * _Nonnull ref) {
if (!error) {
[self.messages addObject:message];
[self finishSendingMessageAnimated:YES];
[self sendToServer:text];
} else {
//Message Failed
}
}];
}
It has something to do with the action being performed asyncronously - for now, I can post the message immediately, then remove the message later if the Firebase operation fails: 它与异步执行的操作有关-现在,我可以立即发布消息,然后在Firebase操作失败的情况下稍后删除消息:
But does anybody know why this happens? 但是有人知道为什么会这样吗? is it something to do with how JSQMessage data source works?
这与JSQMessage数据源的工作方式有关吗?
- (void)didPressSendButton:(UIButton *)button withMessageText:(NSString *)text senderId:(NSString *)senderId senderDisplayName:(NSString *)senderDisplayName date:(NSDate *)date {
JSQMessage *message = [[JSQMessage alloc] initWithSenderId:senderId senderDisplayName:senderDisplayName date:date text:text];
[self.messages addObject:message];
[self finishSendingMessageAnimated:YES];
NSDictionary *firebaseMessage = @{@"avatar":self.avatarURL,@"handle":senderDisplayName,@"message":text,@"profileId":self.profID,@"timestamp":[self getTimestamp]};
[[self.threadRef childByAutoId] setValue:firebaseMessage withCompletionBlock:^(NSError * _Nullable error, FIRDatabaseReference * _Nonnull ref) {
if (!error) {
[self sendToServer:text];
} else {
//Message Failed
[self.messages removeObject:message];
[self.collectionView reloadData];
}
}];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.