2013-04-29 152 views
0

我想使用下面的数组和对象进行表视图。tableview NSInvalidArgumentException,我不知道为什么

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; 
    characterArray = [[NSMutableArray alloc] init]; 

    character * Choice = [[character alloc] init]; 

    Choice.name = @"creat new character"; 
    [characterArray addObject:Choice]; 

    character * secondChoice = [[character alloc]init]; 
    secondChoice.name = @"paliden"; 
    [characterArray addObject:secondChoice]; 
} 

但我不断收到NSInvalidArgumentException,原因是:-[character isEqualToString:]

我已经想通了,这个问题是在这里的cellForRowAtIndexPath

cell.textLabel.text = [characterArray objectAtIndex:indexPath.row]; 

我想不出什么我做错了,直到我对数组进行了一些更改,代码工作正常。任何的意见都将会有帮助。

+0

in cellForRowAtIndexPath再次你必须得到这个名字,所以创建Character * choice =(Character *)[characterArray objectAtIndex:indexPath.row];然后cell.textLabel.text = choice.name;尝试这个 – krishh 2013-04-29 04:42:47

回答

2

您应该提供一个字符串作为cell.textLabel.text的文本。在你的代码中,你只是把你的对象给cell.textLabel.text,这是不正确的。将[characterArray objectAtIndex:indexPath.row]转换为(character *),然后调用.name,这将返回一个String。给这个字符串当作cell.textLabel.text

试试这个输入,

cell.textLabel.text = ((character *)[characterArray objectAtIndex:indexPath.row]).name; 
0

在的cellForRowAtIndexPath从角色获得名义创建

Character *choice=(Character *)[characterArray objectAtIndex:indexPath.row]; 然后

cell.textLabel.text =choice.name;

试试这个希望会有帮助

相关问题