コアデータリレーションシップフェッチ

core-data entity-relationship ios4 iphone
コアデータリレーションシップフェッチ

わかりました、私はこれを持っていると思ったが、私は私が期待している結果を得ていません。 うまく行けば誰かが助けることができます。

2つのエンティティPersonとTimesheetがあり、1つの属性対多リレーションシップがあります:Person.timesheet ←– >> Timesheet.user。 以下のコードは機能しますが、2番目のタイムシートエントリを追加しようとすると、最初のタイムシートエントリがオーバーライドされるようです。

私はApple Docsを見ましたが、この主題については少しあいまいです。

//Add

NSManagedObjectContext *context = self.managedObjectContext;
Person *personAdded = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];
Timesheet *timesheet = [NSEntityDescription insertNewObjectForEntityForName:@"Timesheet" inManagedObjectContext:context];;
timesheet.time = @"10:00 Friday";
timesheet.timestamp = [NSDate date];

NSSet *timesheetSet = [NSSet setWithObject:timesheet];

personAdded.name = @"Darren";
personAdded.job = @"Job to be Done";
personAdded.timesheet = timesheetSet;

NSError *error = nil;
[context save:&error];

if (error) {
    NSLog(@"[ERROR] COREDATA: Save raised an error - '%@'", [error description]);
}

NSLog(@"[SUCCESS] COREDATA: Inserted new User to database!");

// Load

NSEntityDescription *personEntity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity: personEntity];

error = nil;
NSArray *results = [context executeFetchRequest:request error:&error];

if (!results || error) {
    NSLog(@"[ERROR] COREDATA: Fetch request raised an error - '%@'", [error description]);
    [request release];
}
NSLog(@"Results: %@",results);

Person *firstUser = [results objectAtIndex:0];

NSLog(@"First User's name: %@",firstUser.name);
NSLog(@"First User's time %@",[[firstUser.timesheet anyObject] valueForKeyPath:@"timestamp"]);

私は実際にNSSetでPerson.timesheetキーを設定しているので、実際のテーブルではないのだろうか? または、結果を正しく呼び出していない可能性がありますか?

ありがとう、ダレン

  0  0


ベストアンサー

メソッドを提供するPerson.hファイルに生成された「CoreDataGeneratedAccessors」メソッドが必要です。

[personAdded addTimesheet:timesheetSet];

あなたのためにリンクを作成しますか?

コアデータは通常、定義した関係の追加および削除メソッドを生成します。

明確でない場合は、person.hファイルを投稿してください。

0


タイトルとURLをコピーしました