我的应用程序正在加载一些JSON的数据并且一切正常,但是当我尝试在我的UITableView单元格中显示这些数据时,没有任何反应。我的代码如下:
获取数据(JSON):
-(void)fetchedData:(NSData *)responseData {
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSArray* latestLoans = [json objectForKey:@"loans"];
testeDictionary = [latestLoans objectAtIndex:0];
testeLabel.text = [NSString stringWithFormat:@"%@",[testeDictionary objectForKey:@"id"]];
testeString = [testeDictionary objectForKey:@"username"];
[miArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:testeString,@"username",nil]];
}
UITableView:
-(UITableViewCell *)tableView:(UITableView *)myTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = (UITableViewCell *)[self.settingsTableView dequeueReusableCellWithIdentifier:@"CellD"];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CellD" owner:self options:nil];
cell = (UITableViewCell *)[nib objectAtIndex:0];
}
if ([indexPath row] == 0) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CellA" owner:self options:nil];
cell = (UITableViewCell *)[nib objectAtIndex:0];
NSDictionary *itemAtIndex = (NSDictionary *)[miArray objectAtIndex:indexPath.row];
UILabel *usernameString = (UILabel *)[cell viewWithTag:1];
usernameString.text = [itemAtIndex objectForKey:@"id"]; <== MUST DISPLAY JSON VALUE
}
return cell;
}
更清楚的是,我需要在[testeDictionary objectForKey:@"id"]
上显示usernameString.text
?
答案 0 :(得分:1)
您没有存储ID
[miArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:testeString,@"username",nil]];
我想你想要做的就是这样的事情
NSString *idString = [NSString stringWithFormat:@"%@", [testeDictionary objectForKey:@"id"]];
[miArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:
testeString, @"username",
idString, @"id",
nil]];
编辑(解释)
在您的方法fetchedData:
中,您提取ID并将某个标签的文本设置为ID。
testeLabel.text = [NSString stringWithFormat:@"%@",[testeDictionary objectForKey:@"id"]];
之后你忘记了id。然后,您继续提取用户名,并创建一个包含仅用户名的字典,并将该字典添加到名为miArray
的数组中。
[miArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:testeString,@"username",nil]];
请注意,您未指定名为“id”的任何键。
稍后,您从miArray
获取字典。这个词典是你用一个键创建的词典,即“用户名”。您告诉它获取密钥“id”的对象,但由于您从未指定该密钥,因此您获得nil
值。
从底线开始,尝试我的解决方案。