我在SQLite中有两个这样的表:
Users
user_id (pk)
email
inGroups (many to many relationship with groups)
Groups
group_id (pk)
group_name
isActive
whoseUsers (many to many relationship with users)
我的核心数据代码如下:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Users"];
request.predicate = [NSPredicate predicateWithFormat:@"user_id = %@ AND ANY inGroups.group_id = %@", user, group];
NSArray *results = [context executeFetchRequest:request error:&error];
if ([results count] > 0)
{
for (id u in results)
{
[u setIsActive:[NSNumber numberWithInt:1]];
}
if (![context save:&error2])
{
NSLog(@"Error couldn't save: %@", [error2 localizedDescription]);
}
}
当我收到用户后,如何在群组中设置isActive标志?
Users.h
@class Groups;
@interface Users : NSManagedObject
@property (nonatomic, retain) NSNumber * user_id;
@property (nonatomic, retain) NSString * email;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * username;
@property (nonatomic, retain) NSSet *inGroups;
@end
@interface Users (CoreDataGeneratedAccessors)
- (void)addInGroupsObject:(Groups *)value;
- (void)removeInGroupsObject:(Groups *)value;
- (void)addInGroups:(NSSet *)values;
- (void)removeInGroups:(NSSet *)values;
Groups.h
@class Users;
@interface Groups : NSManagedObject
@property (nonatomic, retain) NSNumber * group_id;
@property (nonatomic, retain) NSNumber * isActive;
@property (nonatomic, retain) NSString * group_name;
@property (nonatomic, retain) NSSet *whoseUsers;
@end
@interface Groups (CoreDataGeneratedAccessors)
- (void)addWhoseUsersObject:(Users *)value;
- (void)removeWhoseUsersObject:(Users *)value;
- (void)addWhoseUsers:(NSSet *)values;
- (void)removeWhoseUsers:(NSSet *)values;
@end
@end
答案 0 :(得分:1)
您可以访问与其属性的相互关系,类似于: (我没有检查过,所以sintaxis可能不正确,但想法是一样的。)
if ([results count] > 0)
{
for (Users *user in results)
{
for (Groups *group in user.inGroups)
group.isActive = [NSNumber numberWithBool:YES];
}
if (![context save:&error2])
{
NSLog(@"Error couldn't save: %@", [error2 localizedDescription]);
}
}