为了减少冗余数据我已经做用户的母公司。 病人和助产士是用户的孩子。
唯一的附加数据是,助产士有一组病人和病人可以有一组助产士的。
当我填充管理对象,以核心数据充分显示了他们的正确对象的关系。
问题是,当我尝试使用用户类ManagedObject的关系是指向错误的对象(它实际上指向同一ManagedObject)检索对象。
我查询使用谓词核心数据NSString *predicateString = [NSString stringWithFormat:@"username == '%@' AND password == '%@'", username, password];
当我尝试使用我的helper方法登录我检查,看看是否对象是助产士或病人,所以我知道该叫什么关系。 但关系指向错误的对象。
[User userWithUsername:username
password:password
success:^(id user) {
if([user isKindOfClass:[Midwife class]])
{
NSLog(@"Midwife : %@", [user fullName]);
dispatch_sync(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"midwifeDashboard" sender:self];
});
}
else if([user isKindOfClass:[Patient class]])
{
NSLog(@"Patient : %@", [user fullName]);
dispatch_sync(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"patientDashboard" sender:self];
});
}
}
failure:^(NSError *error) {
NSLog(@"Error %@", [error description]);
dispatch_sync(dispatch_get_main_queue(), ^{
[SVProgressHUD showErrorWithStatus:@"Invalid username or password"];
});
}];
它知道对象是什么类,并调用正确的SEGUE但是这是我的数据和他们的关系变得腐败。
我想这是因为我铸造助产士管理对象到用户管理的对象,但我怎么能这样做呢?
提前致谢。
编辑
我执行像这样读取请求
NSManagedObjectContext* context = [[[MDCDataStore sharedInstance] store] newPrivateContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:entityName inManagedObjectContext:context];
[context performBlock:^{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entityDescription];
[fetchRequest setPredicate:predicate];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:nil];
}];
难道是entityDescription搞乱这个吗?