【问题标题】:NSManagedObject to save or insert checkNSManagedObject 保存或插入检查
【发布时间】:2014-04-03 12:08:23
【问题描述】:

我有一个UIViewController,它在UINavigationBar 中有保存按钮。

UIViewController 用于保存新用户以及编辑用户

打开,保存按钮,我以前总是调用 - (void)insertObject:(NSManagedObject *)object;,当我编辑用户时它会失败,因为该托管对象已经可用。

所以,我正在使用以下检查。这是插入或保存编辑用户的正确方法吗?

NSManagedObject *managedObject = someObject;
NSManagedObjectContext *managedContext = someContextObject;
NSError *error;
if(m.objectID.isTemporaryID){
//This means its a new object so, first insert
[managedContext insertObject:managedObject];
}

[managedContext save:&error];

【问题讨论】:

    标签: ios objective-c cocoa-touch core-data


    【解决方案1】:

    我的模式是在视图控制器上为我的托管对象创建一个属性。假装你的用户类是User

    @property (nonatomic, strong) User *user;
    

    如果我正在编辑,属性将由现有用户设置。如果我正在创建它将是nil。在我的保存逻辑中,我进行了检查:

    - (void)didSelectSaveButton:(id)sender {
        if (!self.user) {
            self.user = [NSEntityDescription insertNewObjectForEntityForName:@"User" 
                                                      inManagedObjectContext:context];
        }
    
        //  Rest of the logic to map the UI elements to the properties of my user model
        //  objects, referencing self.user
    
        NSError *error = nil;
        BOOL success = [managedObjectContext save:&error];
    
        // error handling
    }
    

    这样,我为用户填充信息的逻辑是相同的,无论是“插入”还是“更新”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      相关资源
      最近更新 更多