NSManagedObject 保存或插入检查
Posted
技术标签:
【中文标题】NSManagedObject 保存或插入检查【英文标题】:NSManagedObject to save or insert check 【发布时间】: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];
【问题讨论】:
【参考方案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
这样,我为用户填充信息的逻辑是相同的,无论是“插入”还是“更新”。
【讨论】:
以上是关于NSManagedObject 保存或插入检查的主要内容,如果未能解决你的问题,请参考以下文章
插入的 NSManagedObject 无法保存时会发生啥情况?
核心数据:NSManagedObject 何时插入上下文并保存?