4 つのエンティティを持つコア データ モデルがあります。エンティティPlayer
には、他のエンティティ ( ) との対多関係がありPlayer_Scores,Custom_Exercise,Selected_Exercise
ます。
アプリ デリゲートでNSManagedObjectContext,NSManagedObjectModel,NSPersistentStoreCoordinator
は、標準的な方法でプロパティを作成します。次に、別のビュー コントローラーで、@interface でNSManagedObjectContext
オブジェクトとnewPlayer
Player エンティティの ivar を宣言します。
@interface NewProfileViewController()
{
NSManagedObjectContext *context;
Player *newPlayer;
}
次に、アクションで、次のコードを使用して Player エンティティを作成し、その属性、およびエンティティとエンティティを入力しPlayer_Scores
ますSelected_Exercise
。私が使用するコードは、Player_Scores
および Player エンティティの属性を正常に追加します。ただし、ループに 16 個Selected_Exercise
のエンティティを追加してそれらの属性を設定しようとすると、「前方クラス オブジェクトにプロパティが見つかりませんか?」という大きなエラーが発生します。ヘルプ!!!!!私が言ったように、コードは forSelected_Exercise
と for で同じですPlayer_Scores
。私はすでに再起動、データベースの削除などを試みました。やろうとしたときにポップアップするのはコンパイルエラーですnewEx.exercise=@"blahblahblah";
。newEx.suit=@"blahblahblah";
以下は、そのメソッドの私のコードです。
//1. save a person to database
newPlayer=[NSEntityDescription
insertNewObjectForEntityForName:@"Player"
inManagedObjectContext:context];
newPlayer.name=newentry;
//NSError *error; [context save:&error];
//2. begin making a score card:
Player_Scores *newScoreCard = [NSEntityDescription
insertNewObjectForEntityForName:@"Player_Scores"
inManagedObjectContext:context];
newScoreCard.date_of_game = [NSDate date];
newScoreCard.player=newPlayer; //attach this score card to the new playe
[newPlayer addScoresObject:newScoreCard];//add the score card to the newplayer
//3. make selected_exercise
NSString *plistCatPath = [[NSBundle mainBundle] pathForResource:@"ListOfExercises" ofType:@"plist"]; //grab plist
NSMutableArray* theDictArray= [[NSMutableArray arrayWithContentsOfFile:plistCatPath] copy];
for(int cnt=0;cnt<[theDictArray count];cnt++){
Selected_Exercise *newEx= [NSEntityDescription
insertNewObjectForEntityForName:@"Selected_Exercise"
inManagedObjectContext:context];
newEx.exercise=[[theDictArray objectAtIndex:cnt]valueForKey:@"exercise"];
newEx.suit=[[theDictArray objectAtIndex:cnt]valueForKey:@"suit"];
[newPlayer addSelected_exerciseObject:newEx];
NSLog(@"added exercise %@ for suit %@ at array index %d",[[theDictArray objectAtIndex:cnt]valueForKey:@"exercise"],[[theDictArray objectAtIndex:cnt]valueForKey:@"suit"],cnt);
}
// Save everything
NSError *error = nil;
if ([context save:&error]) {
NSLog(@"The save was successful!");
} else {
NSLog(@"The save wasn't successful: %@", [error userInfo]);
}