我已经将一个核心数据制作成了一对多的关系。 一个人可以拥有多个银行账户。
我已添加与人关联的人员和银行帐户。
@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);
}
当我在文本字段中键入我的手机号码并按下“检查您的余额”按钮时,我的余额应该打印在日志中,我已输入核心数据值。
答案 0 :(得分:1)
您可以使用NSPredicate根据选定的过滤器获取实体,在您的情况下是电话号码
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"mobile_no = %@",phoneNumber];
NSFetchRequest *fetchRequest = [NSFetchRequest new];
[fetchRequest setPredicate:predicate];
NSError *error;
NSArray *result = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
基于此,如果用户有多个银行账户,您可以执行金额计算,因为您已经拥有所有详细信息(假设他在所有银行账户上使用相同的电话号码)
以下是NSPredicate
的文档也可以找到一份好的备忘单here