代码之家  ›  专栏  ›  技术社区  ›  Jeremy Mullin

在从UINavigationController弹出视图之前删除核心数据对象

  •  1
  • Jeremy Mullin  · 技术社区  · 14 年前

    如果用户最终没有修改新条目(这发生在插入操作中),下面的代码将删除一个核心数据对象。根视图控制器创建了实体并传递了对我的视图的引用。如果用户点击“我的视图”上的“完成”按钮,它可以正常工作,但是如果用户使用导航栏上的“后退”按钮向后导航,它返回的根视图将永远挂起。

    我做错什么了吗?我已经考虑过在用户完成视图之前等待创建实体,但是在将来这个视图还将处理编辑现有实体的操作,因此我目前将现有实体传递给这个视图的方法是首选的。

    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
    
        // If the baby has no name, delete the Baby object that the root view
        // already created. Otherwise save it.
        NSManagedObjectContext *context = self.baby.managedObjectContext;
    
        if ( [self.babyNameField.text length] == 0 )
            [context deleteObject:baby];
    
        // Save
        NSError *error = nil;
        if (![context save:&error]) {
            // unresolved jmu - handle error
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);     
        }
    
    }
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   gerry3    14 年前

    这是一种常见的方法,代码看起来不错。

    你有没有在上面设置一个断点,然后走过去确认一下?您需要调试并跟踪代码挂起的位置。