ManagedObject的子实体的关系给错了对象(Relationships of a child

2019-11-03 03:29发布

为了减少冗余数据我已经做用户的母公司。 病人和助产士是用户的孩子。

唯一的附加数据是,助产士有一组病人和病人可以有一组助产士的。

当我填充管理对象,以核心数据充分显示了他们的正确对象的关系。

问题是,当我尝试使用用户类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搞乱这个吗?

Answer 1:

事实证明没有问题。 这是只有当我的NSLog的user.patients属性它出现故障。 如果我通过他们列举我得到正确的和整个对象。

谢谢大家对你的帮助。



文章来源: Relationships of a child entity of ManagedObject gives wrong object