0

私のdidpresssendロジック - 2メッセージがビューに表示されますが、ページがリフレッシュされるとメッセージ配列にはJSQMessagesViewControllerのsendボタンを押したときに2つのメッセージが表示されるのはなぜですか?

- (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 
     } 
    }]; 
} 

答えて

0

それはasyncronously行われている行動とは何かを持っている - Firebase操作が失敗した場合、今のところ、私はすぐにメッセージを投稿することができ、その後メッセージを削除します。

しかし、誰が、なぜこのことを知っているん起こる? 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]; 
     } 
    }]; 
} 
関連する問題