Ios 魔法记录不是随机保存的

Ios 魔法记录不是随机保存的,ios,objective-c,iphone,core-data,magicalrecord,Ios,Objective C,Iphone,Core Data,Magicalrecord,我在保存记录时遇到了一个问题,我不确定我是否做得正确。我很感激你的评论 从VC1到VC2 [[NSManagedObjectContext MR_defaultContext] reset]; self.plan = nil; if ([segue.identifier isEqualToString:@"doAboutItToDoSomething"]) { MakeItHappenViewController *vc = segue.destinati

我在保存记录时遇到了一个问题,我不确定我是否做得正确。我很感激你的评论

从VC1到VC2

[[NSManagedObjectContext MR_defaultContext] reset];
    self.plan = nil;
    if ([segue.identifier isEqualToString:@"doAboutItToDoSomething"])
    {
        MakeItHappenViewController *vc = segue.destinationViewController;
        if (![self.plan.type isEqualToString:@"do"])
        {
            self.plan = [Plan MR_createEntity];
            self.plan.type = @"do";
            vc.plan = self.plan;
            return;
        }
        else
        {
            vc.plan = self.plan;
            NSLog(@"plan not empty");
        }
}

在VC2中有3个选择VC,它们将值传递回self.plan

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{        
    if ([segue.identifier isEqualToString:@"makeItToWhat"])
    {
        CategoryCollectionViewController *cat = segue.destinationViewController;
        cat.plan = self.plan;
    }
    else if([segue.identifier isEqualToString:@"makeitToWho"])
    {
        PersonCollectionViewController *per = segue.destinationViewController;
        per.plan = self.plan;
    }
    else if([segue.identifier isEqualToString:@"makeItToWhen"])
    {
        WhenViewController *when = segue.destinationViewController;
        when.plan = self.plan;
    }
}
在VC2中保存计划

-(IBAction)savePlan:(id)sender
{
    if (self.plan.what != nil  || [self.plan.who.name length] >0 || self.plan.when !=nil)
    {
       // NSLog(@"plan Activity name %@, people name %@ date %@",self.plan.what.name, self.plan.who.name,self.plan.when);
        [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {

            Plan *p = [Plan MR_createEntityInContext:localContext];
            p.type = self.plan.type;
            p.when = self.plan.when;

            if ([self.plan.what MR_inContext:localContext]!=nil)
            {
                NSLog(@"jasjksajklsakjl p.what %@",[self.plan.what MR_inContext:localContext].name);
                p.what = [self.plan.what MR_inContext:localContext];
            }
            p.who = [self.plan.who MR_inContext:localContext];
            p.completed = @(0);
            p.what.plans =p;
            NSLog(@"p %@",p);

        } completion:^(BOOL success, NSError *error)
        {
            if (success)
            {
                [self.plan MR_deleteEntityInContext:[NSManagedObjectContext MR_defaultContext]];
                [self performSegueWithIdentifier:@"makeItHappenToActivities" sender:self];
            }
            else
                NSLog(@"error %@",error);
        }];
    }
}
这是coredata中的关系


我不确定这里的问题是什么。什么不是储蓄?你希望发生什么?@casademora谢谢你的回复。我已调用-(iAction)savePlan:(id)sender成功保存我的记录。但当我试图检索managedObject活动activityArray=[Plan MR_findAllSortedBy:@“when”升序:yeswithPredicate:actPredicate];其中有非常随机的几个对象,它们将是null而不是value。你应该是有价值的,因为在我保存之前我会反复检查它,真的不太确定为什么