难以创建Core Data托管对象

时间:2013-03-06 20:38:00

标签: ios objective-c core-data nsmanagedobject

目前我在sqlite3 app数据库中看不到任何AUser个对象。

这是我创建用户的代码。我错过了什么吗?代码没有警告/错误。

AUser *user = [NSEntityDescription insertNewObjectForEntityForName:@"AUser" inManagedObjectContext:_managedObjectContext];  // _managedObjectContext is declared elsewhere

user.name = username;  //username is some string declared elsewhere / name is an attribute of AUser

3 个答案:

答案 0 :(得分:4)

您需要对上下文执行保存。

NSError* error = nil;
if(![context save:&error]) {        
    // something went wrong
    NSLog(@"Error saving context: %@\n%@", [error localizedDescription], [error userInfo]);
    abort();
}

执行保存时,上下文中的数据将保存到持久性存储协调器(因此在您的sql存储中)。

P.S。基于与 @G的讨论。 Shearer ,在生产中如果上下文无法保存,您可以优雅地处理错误。这意味着不使用导致应用崩溃的abort()调用。

NSError* error = nil;
if(![context save:&error]) {        
    // save failed, perform an action like alerting the user, etc.
} else {
    // save success
}

答案 1 :(得分:3)

创建对象后需要调用save。 例如:

NSError *error;
if ([user.managedObjectContext save:&error]) {
    //Success!
} else {
    //Failure. Check error.
}

答案 2 :(得分:1)

你需要打电话

NSError *error = nil;
[_managedObjectContext save:&error];
if(error != nil) NSLog(@"core data error: %@",[[error userInfo] description]);

将对象保存到数据库之前