【发布时间】:2010-06-25 10:44:02
【问题描述】:
我是 iPhone 开发的新手,试图弄清楚如何设置 Core Data 的一对多关系。我有两个实体设置一个联赛,它与一个实体团队具有一对多的关系。一个联盟里有这么多球队。想想所有打棒球并进入 MLB 的球队。
当用户第一次输入他们的用户名和密码时,我会预先填写数据,所以我首先填充了联赛,这没有问题。然后,当我开始添加球队时,我会搜索联赛。代码如下。
- (NSMutableSet *)checkItem:(int *)identifier inTable:(NSString *)table inContext:(NSString *)context {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:table inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:context,identifier];
[fetchRequest setPredicate:predicate];
NSError *error;
NSArray *items = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
if ([items count] >= 1) {
return [items objectAtIndex:0];
} else {
return nil;
}
}
通过调用这个然后设置团队条目并保存('league' 是我的关系):
NSMutableSet *leagueObjectSet = [self checkItem:lid inTable:@"Leagues" inContext:@"id=%i"];
NSManagedObject *teamObject = [NSEntityDescription insertNewObjectForEntityForName:@"Teams" inManagedObjectContext:managedObjectContext];
[teamObject setValue:[NSNumber numberWithInt:tid] forKey:@"id"];
[teamObject setValue:[dict valueForKey:@"name"] forKey:@"teamName"];
[teamObject setValue:leagueObjectSet forKey:@"league"];
[self saveAction];
当我运行它时,我在控制台中收到此错误消息。
“实体 Teams 不符合键“联盟”的键值编码。”
我这样做对吗?就我所读的一切而言,我似乎是。我来自 MySQL 背景,所以要温柔!
【问题讨论】: