在apple doc上,要将NSMananagedObject插入Core Data,我们需要这样做:
- (void)insertObject
{
NSMananagedObject *newObject = (UserInfo*)[NSEntityDescription insertNewObjectForEntityForName:@"myEntity" inManagedObjectContext:self.managedObjectContext];
[newObject setValue:@"aName" forKey:@"name"];
NSError *error = nil;
if (![context save:&error]) {
}
}
但是如果我的NSManagedObject已经被实例化了,我怎么能把它插入到Core Data而不用'insertNewObjectForEntityForName:inManagedObjectContext'进行重新实例化并复制我的属性?
我想要这样的事情:
- (void)insertObject:(NSManagedObject*) newObject
{
//[newObject insertForEntity:@"entityName" forContext:context];
NSError *error = nil;
if (![context save:&error]) {
}
}
答案 0 :(得分:1)
NSManagedObject
只需 即可通过将其插入上下文来创建。如果你真的想在一个管理器类中使用它,你需要单独的函数来创建它,然后另一个函数来保存它。 (好吧,你可以有一个创建和保存,但是你必须在修改之后再保存它。)
我会在你的经理班中建议这样的事情:
- (UserInfo*)createNewUserInfoObject {
return (UserInfo*)[NSEntityDescription insertNewObjectForEntityForName:@"myEntity"
inManagedObjectContext:self.managedObjectContext];
}
- (BOOL)saveUserInfoObjects {
NSError *error = nil;
if (![self.managedObjectContext save:&error]) {
return NO;
}
return YES;
}
答案 1 :(得分:0)
您必须继承NSManagedObject并进行验证。他们的目的是添加自定义验证。您无需进行任何额外的工作并创建经理。
以下是一些可以帮助您入门的代码。
- (BOOL) validateForInsert:(NSError *__autoreleasing*)error {
/*! @abstract Validation for Inserting Records */
BOOL bValidity = [super validateForInsert:error];
BOOL bUniqueness = [self validateUniqueness:error];
return ( bValidity && bUniqueness );
}
请注意首先调用super。