2010-02-28 52 views
0

我是一个使用iPhone SDK和Objective C的新手。我面临着一个愚蠢的问题,即NSMutableArray对象。使用NSMutableArray存储UITableViewController中除字符串以外的对象的问题

我有一个Team类和Player类。 Team类有一个NSMutableArray对象,其中包含Player对象。 Team类使用initWithTitle:(NSString*)title构造函数初始化。 PlayerName财产。

现在,我有一个简单的导航为基础的应用程序与UITableViewController显示一个添加播放器的行。选择此行后,将打开一个UIViewController,该文本具有用户可以输入新玩家姓名(ex.Player1)的textField。当点击后退按钮时,新玩家名称的行应出现在添加玩家行的上方。添加第二个玩家(eg.Player2)后,行应该是这样的:
PLAYER1
Player2
添加球员

我使用PlayerUpdatedDelegate与方法
-(void)PlayerUpdated:(NSString*)playerName;的时候背背传送新球员姓名UITableViewController按钮被点击。在这种方法中,我创建一个新的Player对象,并使用[team.players addObject:player];

,我现在面临的问题是增加Team输入玩家名字,点击后退按钮后,该应用程序崩溃时,我试图在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath访问玩家的名字方法如下:

if (indexPath.row < [team.players count]) { 
    Player *player = [team.players objectAtIndex:indexPath.row]; 
    [cell textLabel].text = [player name]; // This is the line that fails........ 
    [player autorelease]; 
} 
else { 
    [cell textLabel].text = @"Add New Player"; 
} 

return cell; 

任何帮助将不胜感激。 谢谢。如果你想看看简单的应用程序,我已经上传到:http://www.box.net/shared/y4ct7carfr

回答

0

我找到了解决办法。当我从NSMutableArray中检索到Player对象时,我没有将它投射到Player。当我施放它时,它会起作用。所以解决了它。

0

你没有使用self与属性,合成。当你写

title = teamTitle; 

保留产权的数量不会增加,程序也将崩溃在Team类的dealloc,因为你释放标题,其保留计数是这样

self.title = teamTitle; 

0正确东星错误先纠正相关代码并重试。 编辑

-(void) setPlayerName:(NSString *)playerName 尝试

self.name = playerName; 
+0

@EEE:你是对的team.title;但我并没有面临team.title的任何问题。当我从团队中的玩家对象中检索它时,我遇到了问题。 – ashtee 2010-02-28 21:51:50

+0

我已经编辑了答案,查看了一下。 – EEE 2010-02-28 22:02:14

+0

不..也没有帮助... :( – ashtee 2010-02-28 22:10:47

相关问题