Сохранение данных из ячеек tableview в основных данных

Привет, я пытаюсь сохранить данные в основных данных, и у меня возникли проблемы ... У меня есть сущность группы и сущность игрока. Сущность команды настроена как связь один-ко-многим с сущностью игрока ... на моем "NewTeamViewController" Есть два раздела, во втором разделе вы добавляете игроков в команду. В заголовке раздела есть кнопка для добавления нового игрока ... Когда эта кнопка нажата, появляется новая ячейка с тремя текстовыми полями, каждое из которых содержит текст по умолчанию (не текст-заполнитель), тогда я добавляю нового игрока в MutableSet которые будут добавлены как игроки команд. В табличном представлении используется настраиваемая ячейка (в которой находятся три текстовых поля)

Команда сохраняет правильно, за исключением того, что я не могу сохранить данные из трех текстовых полей в ячейке игрока. Он просто сохраняет текст по умолчанию в ячейке для игрока.

Я не уверен, как и где передать данные из вновь добавленной ячейки во вновь добавленный объект проигрывателя.

Вот код ...

-(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];     
}

person Luke    schedule 14.07.2012    source источник


Ответы (1)


Добавьте свой 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, потому что полезно знать порядок игроков в таблице.

person Russell Ladd    schedule 15.07.2012
comment
Привет, спасибо за ответ. Но, во-первых, я не использую конструктор интерфейсов. Во-вторых, я не могу изменить _TempSet на _tempArray, потому что основные данные должны использовать NSSet для хранения данных, а не массива ... - person Luke; 15.07.2012