Ios 使用核心数据和获取请求更新一段数据
我在SQLlite中有两个这样的表:Ios 使用核心数据和获取请求更新一段数据,ios,objective-c,core-data,ios7,nsfetchrequest,Ios,Objective C,Core Data,Ios7,Nsfetchrequest,我在SQLlite中有两个这样的表: 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 fetchRequ
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
您可以访问与其属性的相互关系,类似于: (我还没有检查,所以轴可能不正确,但想法是一样的)
似乎正确,但我一直得到一个:在转发类对象“用户”中找不到属性“inGroups”重建对象模型,也就是说,删除用户和组类,然后选择模型,转到编辑器,创建NSManagedObjectSubclass。这样,它们就存在于我的User.h/m和Groups.h/m中。正确地说,inGroups是一个NSSet
\include“Users.h”
@chris haha,是的,您在使用此代码的任何地方都包含了托管对象子类用户和组的头文件吗?您看过文档中的这些页面了吗?
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]);
}
}