从核心数据中的tableview单元格中保存数据

时间:2012-07-14 23:05:39

标签: ios uitableview core-data uitextfield custom-cell

您好我正在尝试将数据保存到核心数据中并遇到一些麻烦...我有一个团队实体和一个玩家实体团队实体被设置为与玩家实体的一对多关系...在我的“NewTeamViewController”有两个部分,第二部分是你向团队添加玩家的地方。在节标题中有一个添加新播放器的按钮...当按下该按钮时,会出现一个带有三个textFields的新单元格,每个textFields都有默认文本(不是占位符文本)然后我将新播放器添加到MutableSet这将作为球队球员加入。 tableview使用自定义单元格(三个textFields所在的位置)

团队正确保存,但我无法保存播放器单元格中三个文本字段的数据。它只是将默认文本保存在播放器的单元格中。

我不确定如何或在何处将新添加的单元格中的数据提供给新添加的玩家对象。

这是一些代码......

-(void)saveButtonWasPressed {

self.team =[NSEntityDescription insertNewObjectForEntityForName:@"Team" inManagedObjectContext:self.managedObjectContext];

team.schoolName = _schoolName.text;
team.teamName = _teamName.text;
team.season =  _season.text;
team.headCoach = _headCoach.text;
team.astCoach = _assistantCoach.text;

player.firstName = cell.playerFirstName.text;
player.lastName = cell.playerLastName.text;
player.number = cell.playerNumber.text; 

[self.team addPlayers:_tempSet];

[self.managedObjectContext save:nil];
[self.navigationController popViewControllerAnimated:YES];    
}
//////////////////////////////////////////////////////////////////////////////////////////////////


-(void)addPlayerButton {

player = (Player *)[NSEntityDescription insertNewObjectForEntityForName:@"Player" 
                                                            inManagedObjectContext:self.managedObjectContext];

[_tempSet addObject:player]; 

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1]  withRowAnimation:UITableViewRowAnimationFade];     
}

1 个答案:

答案 0 :(得分:0)

NewTeamViewController添加为每个文本字段的控件事件UIControlEventEditingChanged的目标。您可以在代码(cellForRowAtIndexPath...)或笔尖或故事板中执行此操作。我会为每个单元格中的三个不同文本字段中的每一个使用不同的操作方法。以下是您的操作方法的样子:

// Helper method
- (Player *)playerForTextField:(UITextField *)textField
{
    NSIndexPath *indexPath = [self.tableView indexPathForCell:textField.superview];
    return [_tempArray objectAtIndex:indexPath.row];
}

- (IBAction)firstNameDidChange:(UITextField *)textField
{
    Player *player = [self playerForTextField:textField];
    player.firstName = textField.text;
}

- (IBAction)lastNameDidChange:(UITextField *)textField
{
    Player *player = [self playerForTextField:textField];
    player.lastName = textField.text;
}

- (IBAction)numberDidChange:(UITextField *)textField
{
    Player *player = [self playerForTextField:textField];
    player.number = textField.text;
}

另外,将_tempSet更改为_tempArray,因为了解表格中的玩家顺序非常有用。