1

目前我AUser在我的 sqlite3 应用程序数据库中看不到任何对象。

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

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
4

3 回答 3

4

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

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

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

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

NSError* error = nil;
if(![context save:&error]) {        
    // save failed, perform an action like alerting the user, etc.
} else {
    // save success
}
于 2013-03-06T20:40:57.320 回答
3

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

NSError *error;
if ([user.managedObjectContext save:&error]) {
    //Success!
} else {
    //Failure. Check error.
}
于 2013-03-06T20:40:31.493 回答
1

你需要打电话

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

在对象被持久化到数据库之前

于 2013-03-06T20:41:46.000 回答