如何在CoreData中匹配NSSet的对象值?
我做了一个核心数据一个关系。 一个人可以拥有多个银行账户。
现在
我已添加与人员关联的人员和银行帐户。
代码是
@synthesize setContainer,textField; - (void)viewDidLoad { [super viewDidLoad]; self.setContainer = [[NSMutableSet alloc]init]; appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; NSEntityDescription *entityPerson = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:appDelegate.managedObjectContext]; NSManagedObject *newPerson = [[NSManagedObject alloc]initWithEntity:entityPerson insertIntoManagedObjectContext:appDelegate.managedObjectContext]; [newPerson setValue:@"Steve" forKey:@"name"]; [newPerson setValue:@"UK" forKey:@"address"]; [newPerson setValue:@123456 forKey:@"mobile_no"]; NSEntityDescription *entityAccount = [NSEntityDescription entityForName:@"Account" inManagedObjectContext:appDelegate.managedObjectContext]; NSManagedObject *newaccount = [[NSManagedObject alloc]initWithEntity:entityAccount insertIntoManagedObjectContext:appDelegate.managedObjectContext]; [newaccount setValue:@98765432100 forKey:@"acc_no"]; [newaccount setValue:@"Saving" forKey:@"acc_type"]; [newaccount setValue:@1000000 forKey:@"balance"]; // Add Address to Person setContainer = [newPerson mutableSetValueForKey:@"person"]; [self.setContainer addObject:newaccount]; NSLog(@"%@",self.setContainer); // Save Managed Object Context NSError *error = nil; if (![newPerson.managedObjectContext save:&error]) { NSLog(@"Unable to save managed object context."); NSLog(@"%@, %@", error, error.localizedDescription); }
我的问题是
当我在文本字段上input我的手机号码并按下“查看您的余额”button时,我的余额应该是打印在日志里,我已经input了核心数据值。
图像是
产量
您可以使用NSPredicate获取基于选定filter的实体,在您的情况下电话号码
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"mobile_no = %@",phoneNumber]; NSFetchRequest *fetchRequest = [NSFetchRequest new]; [fetchRequest setPredicate:predicate]; NSError *error; NSArray *result = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
基于此,如果用户拥有多个银行帐户,则可以执行计算金额,因为您已经拥有所有详细信息(假设他在他的所有银行帐户上都使用相同的电话号码)
这里是关于NSPredicate的文档
一个好的备忘单,以及可以在这里find