Я создаю приложение чата. У меня есть 2 метода в моем контроллере представления, один для отправки и один для получения сообщений. В методе отправки я создаю NSMutableDictionary с двумя объектами ..
NSMutableDictionary *msgFilter = [[NSMutableDictionary alloc] init];
[msgFilter setObject:messageStr forKey:@"msg"];
[msgFilter setObject:@"you" forKey:@"sender"];
[messages addObject:msgFilter];
«messages» - это мой основной NSMutableArray для хранения всех сообщений, свойства которых установлены, синтезированы и распределены. Когда я отправляю сообщение, оно правильно добавляется в NSMutableArray, и обновляется UITableView, показывая мне значения в ячейке.
У меня в appDelegate есть метод для проверки полученных сообщений, и я использую ту же процедуру для анализа данных и сохранения их в NSMutableDictionary. Этот словарь затем передается в viewcontroller и добавляется в тот же NSMutableArray (messages), а затем я вызываю [self.chattable reloadData]. Но это ничего не делает. Когда я создал NSMutableArray, у него было только полученное сообщение, а не все данные (отправлено + получено).
Почему он не добавляет полученные сообщения в один и тот же массив и почему он не обновляет мою таблицу. Я уже несколько дней пытаюсь заставить его работать ... Пожалуйста, помогите ..
// Раздел сообщений о приеме
NSMutableDictionary *msgFilter = [myDelegate msgFilter];
[messages addObject:msgFilter];
[self.tView reloadData];
// Раздел таблицы
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [messages count];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
NSDictionary *s = (NSDictionary *) [messages objectAtIndex:indexPath.row];
NSString *sender = [s objectForKey:@"sender"];
NSString *message = [s objectForKey:@"msg"];
if ([sender isEqualToString:@"you"])
{
cell.detailTextLabel.text = [NSString stringWithFormat:@"TX: %at", message];
}
else
{
cell.detailTextLabel.text = [NSString stringWithFormat:@"RX: %at", message];
}
return cell;
}