0

コア データを使用しており、エンティティの 1 つに 1 対多の関係を設定しています。私は2つのエンティティを持っています。「チーム」と「プレーヤー」 プレーヤーの NSMutableSet をチームに追加しようとしています。

以下は、チームにプレーヤーを追加しようとしている方法です。

-(void)addPlayerButton {

[_tempSet addObject:@""];

NSLog(@"number of cells in _tempSet is:%i",[_tempSet count]);

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

}

私はこうやって節約しています

-(void)saveButtonWasPressed {

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

self.player = [NSEntityDescription insertNewObjectForEntityForName:@"Player" inManagedObjectContext:self.managedObjectContext];
[team addPlayersObject:player];

team.schoolName = _schoolName.text;
team.teamName = _teamName.text;
team.teamID = _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];    

}

問題が 2 つあります。1 つは、_tempSet は 1 つのオブジェクトのみを追加し、それ以上追加できません。行 [self.team addPlayers: tempSet];の直前で [save] をクリックすると、2 つ目のクラッシュが発生します。エラー [ _NSCFConstantString _isKindOfEntity:]: 認識されないセレクターがインスタンス 0xd7cd8 に送信されました」

私は Core Data に比較的慣れていないので、他に何か間違ったことをしている場合は、お気軽に修正してください...

4

1 に答える 1

0

最初の関数には次の行があります

[_tempSet addObject:@""];

じゃあ後で:

[self.team addPlayers:_tempSet];

したがって、Player エンティティを追加する必要がある場合は、NSString を team のplayers リレーションシップに追加します。最初の関数では、次のようなものを試してください:

Player *newPlayer = (Player *)[NSEntityDescription insertNewObjectForEntityForName:@"Player" 
inManagedObjectContext:managedObjectContext];
[_tempSet addObject:newPlayer];

しかし、空のプレーヤーをチームに追加するだけでなく、プレーヤーにいくつかの属性を設定したい場合もあります。

于 2012-07-04T18:22:35.053 に答える