我创建了4个实体。 用户,手机,电子邮件,地址。 用户与移动设备有许多关系(名称为数字)。 我有以上所有的子类。如何从特定用户删除单个手机号码?如何更新来自特定用户的单个手机号码?谓词用于什么?
代码在这里:
NSManagedObjectContext *context = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:NSStringFromClass([User class])];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY numbers.number == %@",self.textField.text];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *array = [context executeFetchRequest:request error:&error]; Mobile *objMobile;
User *objUser;
objUser = [array objectAtIndex:0];
for (User *obj in [objUser.numbers valueForKey:@"number"]) {
NSLog(@"%@",obj);
NSString *str1 = [NSString stringWithFormat:@"%@",obj];
NSString *str2 = [NSString stringWithFormat:@"%@",self.textDelete.text];
if ([str1 isEqualToString:str2] ) {
[objUser removeNumbersObject:objMobile]; }
}
NSLog(@"%@",[objUser.numbers valueForKey:@"number"]); self.textAddUserDetail.text = @"";
if (![context save:&error]) { }
答案 0 :(得分:0)
基本上,不要根据用户和关系进行搜索。而是直接搜索该号码,然后将其删除或编辑:
NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:NSStringFromClass([Number class])];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"number == %@", self.textField.text];
然后你也不需要循环并额外考虑要做什么。
答案 1 :(得分:0)
使用" Magical Records" Library.it使用键值编码不需要维护Relationships.it将自动从所有实体获取唯一键