gpt4 book ai didi

ios - 创建类似于 whatsapp 的消息历史记录(objective-c)

转载 作者:行者123 更新时间:2023-11-29 10:49:22 26 4
gpt4 key购买 nike

我需要创建一个聊天记录,例如 whatsapp,也就是说:我想要有多少个对话就有多少个单元格,每个单元格必须显示您执行对话的用户名,以及对话中的最后一条消息。在 mySQL 数据库中有一个包含以下字段的表(聊天):

  • 身份证
  • IDConversation(表示 session 的ID,以便统一在一个 session 中,所有具有相同IDConversation的消息)
  • IDSender(代表发送消息的用户ID)
  • IDReceiver(代表接收消息的用户ID)
  • SenderName(代表发送消息的用户名)
  • ReceiverName(代表接收消息的用户名)
  • 消息(代表对话中发送的消息)
  • DateTime(表示消息发送的日期时间,格式为yyyy-mmm-dd)

在我的 UITableViewController 类中,我有用于填充表的方法(myID 是一个字符串,其中包含当时登录的用户的 ID - _script 是一个类的实例,它向 php 脚本发送查询并连接到 mysql数据库):

- (void)getConversations{
_arrID = [[NSMutableArray alloc] initWithArray:[_script objsRequest:[NSString stringWithFormat:@"SELECT ID FROM Chat WHERE IDSender = %@ OR IDReceiver = %@",_myID,_myID]]];
_arrLastID = [[NSMutableArray alloc] init];
_arrLastMessages = [[NSMutableArray alloc] init];
_arrIDConversations = [[NSMutableArray alloc] init];
_arrIDUsers = [[NSMutableArray alloc] init];
_arrProfileSnaps = [[NSMutableArray alloc] init];
_arrUsernames = [[NSMutableArray alloc] init];
[_arrLastID addObjectsFromArray:[_script objsRequest:[NSString stringWithFormat:@"SELECT MAX(ID) FROM Chat WHERE IDSender = %@ OR IDReceiver = %@",_myID,_myID]]];
for (int i = 0; i <[_arrLastID count]; i++) {
NSString *IDUser = [_script objRequest:[NSString stringWithFormat:@"SELECT IDSender FROM Chat WHERE ID = %@ AND IDReceiver = %@",_arrLastID[i],_myID]];
if ([IDUser isEqualToString:@""]) {
IDUser = [_script objRequest:[NSString stringWithFormat:@"SELECT IDReceiver FROM Chat WHERE ID = %@ AND IDSender = %@",_arrLastID[i],_myID]];
}
[_arrIDUsers addObject:IDUser];
[_arrLastMessages addObject:[_script objRequest:[NSString stringWithFormat:@"SELECT Message FROM Chat WHERE ID = %@",_arrLastID[i]]]];
[_arrIDConversations addObject:[_script objRequest:[NSString stringWithFormat:@"SELECT IDConversation FROM Chat WHERE ID = %@",_arrLastID[i]]]];
[_arrUsernames addObject:[NSString stringWithFormat:@"%@ %@",[_script objRequest:[NSString stringWithFormat:@"SELECT Name FROM User WHERE ID = %@",IDUser]],[_script objRequest:[NSString stringWithFormat:@"SELECT Surname FROM User WHERE ID = %@",IDUser]]]];

[self.tableView reloadData];
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [_arrIDConversations count];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{


UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"userCell"]];

if ( cell == nil ) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}

NSString *username = [self.arrUsernames objectAtIndex:indexPath.row];
NSString *lastMessage = [self.arrLastMessages objectAtIndex:indexPath.row];
NSString *IDUser = [self.arrIDUsers objectAtIndex:indexPath.row];

UILabel *cellLabelUsername = (UILabel *)[cell viewWithTag:1];
NSMutableAttributedString *richTask = [[NSMutableAttributedString alloc]
initWithString:[NSString stringWithFormat:@"%@",username]];
cellLabelUsername.attributedText = richTask;

UILabel *cellLabelLastMessage = (UILabel *)[cell viewWithTag:3];
cellLabelLastMessage.text = lastMessage;

}

我知道读取对话的代码 (getConversations) 有问题,因为一旦我启动应用程序,只有一个单元格包含最后一次对话和最后一条消息,但不会出现与其他相关帖子的对话.

请帮帮我!

最佳答案

这个 git 项目可能会有用:

https://github.com/andreamazz/AMBubbleTableView/

关于ios - 创建类似于 whatsapp 的消息历史记录(objective-c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21104374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com