我的视图控制器上有两个uitableview元素...人员加载的tableview精确显示表中的人名,当我选择一个人时,我在我的NSLog中获取personID,personName填充UILabel就好了但是团队的tableview加载 NSCFString,当我选择它时,应用程序崩溃,这是在日志中:"由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [ _NSCFString teamID]:无法识别的选择器发送到实例......"
的.m
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if (tableView == _personList){
return [personData count];
}else{
return [teamData count];
}
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (tableView == _personList){
if(!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
Persons *person = [personData objectAtIndex:indexPath.row];
cell.textLabel.text = person.personName;
return cell;
}else {
if(!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
Teams *team = [teamData objectAtIndex:indexPath.row];
cell.textLabel.text = team.teamName;
return cell;
}
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == _personList){
Persons *person = [personData objectAtIndex:indexPath.row];
NSString *selPersonID = person.personID;
_thePersonName.text = person.personName;
NSLog(@"PersonID: %@", selPersonID);
}else if(tableView == _teamList){
Teams *team = [teamData objectAtIndex:indexPath.row];
NSString *selTeamID = team.teamID;
_theTeamName.text = team.teamName;
NSLog(@"TeamID: %@", selTeamID);
}
}
答案 0 :(得分:0)
错误消息表示尝试获取其teamID的对象没有teamID属性(因为您的数组以某种方式返回NSString,而不是Team对象)。
因此,您必须查看您的teamData数组是否已正确填充Team对象。