заполнять uitableview из nsdictionary

140
16

У меня есть nsdictionary от json, который отвечает:

({
email = "something@gmail.com";
name = "User1";
},
{
email = "something2@gmail.com";
name = "user2";
})

Это мой код в файле.m:

   - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{

NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*) response;

int errorCode = httpResponse.statusCode;

NSString *fileMIMEType = [[httpResponse MIMEType] lowercaseString];

NSLog(@"response is %d, %@", errorCode, fileMIMEType);

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

//NSLog(@"data is %@", data);

NSString *myString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

//NSLog(@"string is %@", myString);
NSError *e = nil;

usersDictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&e];

NSLog(@"dictionary is %@", usersDictionary);
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {

// inform the user

NSLog(@"Connection failed! Error - %@ %@",

[error localizedDescription],

[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

NombreUsuario = [[NSMutableArray alloc] initWithCapacity:[usersDictionary count]];

}

Я использую это, чтобы возвращать числа строк в разделе:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [usersDictionary count];
}

Но я не понимаю, как поместить пару данных электронной почты, имя в таблицу, в которой каждая ячейка должна показывать основную метку имени и субтитры для электронной почты.

Заранее спасибо.

спросил(а) 2021-01-25T10:30:08+03:00 4 месяца, 4 недели назад
1
Решение
63

Я отвечу на свой собственный вопрос для будущей справки о том, кому это может понадобиться.

Сначала мне пришлось хранить json-ответ в NSMutableArray, а не в словаре.

Поскольку у меня есть набор словарей, у меня есть два уровня информации, я пытался разложить его на новые объекты, но это был не правильный подход, поэтому для доступа к второму уровню я должен перейти к нему:

cell.textLabel.text = [[NombreUsuario objectAtIndex:indexPath.row]objectForKey:@"name"];

С этим [NombreUsuario objectAtIndex: indexPath.row] я обращаюсь к первому уровню информации, а затем с objectForKey: @"name" Я получаю все значения, которые соответствуют ключевому "name".

Для текста ярлыков то же самое:

cell.detailTextLabel.text = [[NombreUsuario objectAtIndex:indexPath.row]objectForKey:@"email"];

Спасибо всем за вашу помощь.

ответил(а) 2021-01-25T10:30:08+03:00 4 месяца, 4 недели назад
45

Я не буду писать ваш код для вас, но вам нужно посмотреть, как реализовать UITableViewDataSource. В частности, то, что вы хотите сделать, будет находиться в методе tableView: cellForRowAtIndexPath:. Для вас есть тысячи хороших примеров в Интернете.

ответил(а) 2021-01-25T10:30:08+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема