我正在尝试在阵列中找到所选人员。我正确地得到了没有人被选中的地方,但是,如果选择了一个组中的一个人,则该组中的所有人都被选中。
经过长时间的讨论,我可以使用一些帮助来看看是否有明显的东西。
此操作正在cellForRowAtIndexPath
中进行,如下所示:
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%s", __FUNCTION__);
static NSString *pCell = @"Cell";
PeopleCell *cell = (PeopleCell *)[aTableView dequeueReusableCellWithIdentifier:pCell];
if (cell == nil) {
cell = [[PeopleCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:pCell];
}
people = [peopleArray objectAtIndex:[indexPath row]];
NSString *text = [people objectForKey:@"name"];
cell.textLabel.text = text;
if (selectedPeopleinGroup.count == 0) {
//no people selected in this group
NSLog(@"none");
cell.isSelected = [selectedPeopleinGroup containsObject:text] == NO;
} else {
//there are some people in this group - find out who they are
NSLog(@"some");
NSString *key1 = [selectedPeopleinGroup valueForKey:@"personKey"];
NSString *key2 = [people valueForKey:@"personKey"];
NSLog (@"key1 %@", key1 );
NSLog (@"key2 %@", key2 );
if (key1 == key2) {
cell.isSelected = [selectedPeople containsObject:text] == YES;
} else {
cell.isSelected = [selectedPeople containsObject:text] == NO;
}
}
return cell;
}
单元格是一个子类UITableViewCell,如果选中,则在单元格的左侧有一个复选标记图像,如果没有选择,则在另一个图像上有一个不同的图像。非常感谢。
答案 0 :(得分:1)
这看起来很奇怪:
NSString *key1 = [selectedPeopleinGroup valueForKey:@"personKey"];
如果selectedPeopleInGroup
是一个数组,那么valueForKey:
将返回在数组中每个对象上调用valueForKey
的结果数组。所以你要为一个字符串分配一个数组。
我很惊讶编译器没有发出关于此的警告。我也很惊讶日志语句没有显示奇数值。