1

こんにちは私はデータをコアデータに保存しようとしていますが、問題があります...チームエンティティとプレーヤーエンティティがありますチームエンティティは、プレーヤーエンティティとの1対多の関係として設定されています...「NewTeamViewController」で2つのセクションがあり、2番目のセクションでは、チームにプレーヤーを追加します。セクションヘッダーには、新しいプレーヤーを追加するためのボタンがあります...そのボタンを押すと、新しいセルに3つのtextFieldが表示され、それぞれにデフォルトのテキスト(プレースホルダーテキストではない)が含まれます。次に、新しいプレーヤーをMutableSetに追加します。それはチームプレーヤーとして追加されます。テーブルビューはカスタムセル(3つのtextFieldが存在する場所)を使用しています

プレーヤーセルの3つのテキストフィールドからデータを保存できないことを除いて、チームは正しく保存します。プレーヤーのセルにデフォルトのテキストを保存するだけです。

新しく追加されたセルから新しく追加されたプレーヤーオブジェクトにデータを提供する方法と場所がわかりません。

ここにいくつかのコードがあります...

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

1 に答える 1

0

各テキスト フィールドNewTeamViewControllerのコントロール イベントのターゲットとして、を追加します。UIControlEventEditingChangedこれは、コード ( cellForRowAtIndexPath...) または nib またはストーリーボードで行うことができます。各セルの 3 つの異なるテキスト フィールドごとに異なるアクション メソッドを使用します。アクション メソッドは次のようになります。

// 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を aに変更します。_tempArray

于 2012-07-15T05:35:03.317 に答える