【发布时间】:2026-01-08 09:10:01
【问题描述】:
好的,我以为我有这个,但我没有得到我期望的结果。希望有人可以提供帮助。
我有两个实体 Person 和 Timesheet ,它们具有一对多的关系: Person.timesheet>Timesheet.user。 下面的代码有效,但是当我尝试添加第二个时间表条目时,它似乎覆盖了第一个?
我查看了 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 键?或者可能是我没有正确调用结果?
谢谢, 达伦
【问题讨论】:
标签: iphone ios4 core-data entity-relationship