目前我在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
答案 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]);
将对象保存到数据库之前