1

在苹果文档中,要将 NSManagedObject 插入核心数据,我们需要这样做:

- (void)insertObject
{
    NSMananagedObject *newObject = (UserInfo*)[NSEntityDescription insertNewObjectForEntityForName:@"myEntity" inManagedObjectContext:self.managedObjectContext];
    [newObject setValue:@"aName" forKey:@"name"];

    NSError *error = nil;
    if (![context save:&error]) {
    }
}

但是,如果我的 NSManagedObject 已经实例化,我该如何将它插入到核心数据上而不用重新实例化 'insertNewObjectForEntityForName:inManagedObjectContext' 并复制我的属性?

我想要这样的东西:

- (void)insertObject:(NSManagedObject*) newObject
{
    //[newObject insertForEntity:@"entityName" forContext:context];

    NSError *error = nil;
    if (![context save:&error]) {
    }
}
4

2 回答 2

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;
}
于 2012-04-13T17:06:18.607 回答
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。

于 2012-04-13T16:49:08.847 回答