我在UITableView中遇到头发问题。我只是想从数组中挑出一个名字字段。我必须做一些愚蠢的事情,但我无法看到它。请任何想法..
NSMutableArray *localStop = [localArray objectAtIndex:indexPath.row];
NSLog(@"localStop: %@", localStop);
BOTH OF THESE RETURN NULL
cell.nameLabel.text = [[localArray objectAtIndex:indexPath.row] valueForKey:@"Name" ];
OR
cell.nameLabel.text = [localStop valueForKey:@"Name"];
NSLog(@"localStop Name1: %@", cell.nameLabel.text);
NSLog(@"localStop Name2: %@", [[localArray objectAtIndex:indexPath.row] valueForKey:@"Name"]);
然而,在电池中,LATTER显示为空,但在控制台中显示正确。
CONSOLE OUTPUT:
localStop: {
Lat = "38.928922";
Lon = "-77.037531";
Name = "MT PLEASANT ST NW + IRVING ST NW";
Routes = (
42,
43
);
StopID = 1002005;
}
localStop Name1: (null)
localStop Name2: MT PLEASANT ST NW + IRVING ST NW
答案 0 :(得分:1)
你宣布了
NSMutableArray *localStop
作为数组,当您在数组上调用valueForKey
时,它应返回NSArray
。不是NSString
。 (localArray
是一个二维数组??)
我认为您应该将localStop
声明为NSMutableDictionary
但当然我不能完全确定是否是这种情况,因为我不知道localArray
中包含哪种数据。
但是,如果localArray
是NSDictionary
数组,那么我不知道为什么会返回NULL:
cell.nameLabel.text = [[localArray objectAtIndex:indexPath.row] valueForKey:@"Name"];
如果localArray
是一个二维数组,那么很明显为什么会出现问题。您正在尝试设置一个UILabel
的文本属性,NSString
带有NSArray
(仍然您不应该看到NULL但数组内容为字符串)我也很困惑:)
答案 1 :(得分:1)
当你从数组中取出数据时,你的问题可能在于valueForKey:
。
你需要根据数组中的数据类型告诉我们/ know / act。
通常,当涉及到单元格填充数组时,您会有自定义对象,因此我们的第一个示例是具有您显示的属性的自定义对象,例如
我们有一个学生对象,例如,有一个名字和一个年龄,你只需要:
Student *currentStudent = [localArray objectAtIndex:indexPath.row];
cell.nameLabel.text = currentStudent.name;
cell.ageLabel.text = currentStudent.age.stringValue;
如果您的数组中有NSDictionary
,那么它几乎是相同的,除了您从数组中提取NSDictionary
并使用-objetForKey:
方法检索不同的你需要的钥匙。
请务必记下the difference between objectForKey and valueForKey
您也可以跳过从数组创建对象的部分,并直接引用数组中的字符串,如下所示
为学生示例:
cell.nameLabel.text = [[localArray objectAtIndex:indexPath.row]name];
或字典:
cell.nameLabel.text = [[localArray objectAtIndex:indexPath.row]objectForKey:@"name"];
按照这些说明重新编写代码可以解决您的问题。如果没有,请提供有关阵列中的内容的更多信息,并在此发表评论以通知我:)
查看NSLog
之后,看起来你的字典数组似乎很好(这很好),所以你必须使用objectForKey
调整代码并将数组中的内容视为一个NSDictionary
并且绝对不是NSMutablArray
,正如NSWill所建议的那样(在评论中)