我是核心數據的新手,因此我有幾個問題。我會問兩個核心數據插入和獲取多對多關係實體
1)我有兩個實體名爲Team和TeamMembers。他們有多對多的關係,即一個團隊可以有很多成員。首先請看下面的模型圖和.h文件,並讓我知道我是否已經在Team和TeamMembers之間建立了正確的一對多關係(我有一種感覺,我已經建立了相反的關係)。
Teams.h
#import <CoreData/CoreData.h>
@class TeamMembers;
@interface Teams : NSManagedObject
{
}
@property (nonatomic, retain) NSString * team_name;
@property (nonatomic, retain) NSString * color;
@property (nonatomic, retain) NSString * points;
@property (nonatomic, retain) TeamMembers * members;
@end
TeamMembers.h
#import <CoreData/CoreData.h>
@class Teams;
@interface TeamMembers : NSManagedObject
{
}
@property (nonatomic, retain) NSString * member_name;
@property (nonatomic, retain) NSSet* teams;
@end
@interface TeamMembers (CoreDataGeneratedAccessors)
- (void)addTeamsObject:(Teams *)value;
- (void)removeTeamsObject:(Teams *)value;
- (void)addTeams:(NSSet *)value;
- (void)removeTeams:(NSSet *)value;
@end
2)請我需要的示例代碼插入小組隨後將其團隊成員。另外如何獲取特定團隊的團隊成員。
EDITED 我使用下面的代碼插入到團隊和團隊成員的實體,但它沒有返回在NSSet中所有團隊成員。它只返回結果集中的一個團隊成員
self.context = [del managedObjectContext];
Teams *teamobj = [NSEntityDescription
insertNewObjectForEntityForName:@"Teams"
inManagedObjectContext:context];
teamobj.team_name = teamname.text;
teamobj.color = [NSString stringWithFormat:@"%d", color];
teamobj.points = [NSString stringWithFormat:@"%d", 0];
for(UITextField *view in self.scrollview.subviews)
{
if([view isKindOfClass:[UITextField class]])
{
if ([view tag] == 99) {
if (![view.text isEqualToString:@""]) {
noone = YES;
TeamMembers *teammember = [NSEntityDescription
insertNewObjectForEntityForName:@"TeamMembers"
inManagedObjectContext:context];
teammember.member_name = view.text;
teammember.teams = teamobj;
[teamobj addMembersObject:teammember];
}
}
}
}
if (![context save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure" message:@"Unable to save team at the moment." delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil];
[alert show];
[alert release];
}
感謝您的答覆。你能否給出一個在TeamMembers中爲特定團隊插入的示例 –
也可以將你的實體命名爲單數對象而不是複數;所以'團隊'和'團隊成員',而不是'團隊'和'團隊成員'。 –
感謝您展示示例代碼。你是否也可以展示如何將NSSet團隊成員添加到團隊中? –