永久保存CoreData

问题描述:

我一直在尝试整个下午让我的应用程序的CoreData部分工作,并且几乎让它工作,因为它应该。问题是CoreData在应用程序终止时没有保存适当的值(从多任务菜单中删除)。剩下的值是我放入实体的intitial值(在我的情况下,定义为NSString),而不是用户输入的新值。所以,问题是节省了应用程序被关闭后永久性的新的价值,尚未出现时,再次应用程序加载初始值永久保存CoreData

实体名称:Gameinfo

属性:score

我不知道是什么我做错了。如果有人可以帮助我,它将不胜感激。 谢谢!

-(IBAction)saveTheory1 
{ 
AppDelegate *appDelegate= [[UIApplication sharedApplication] delegate]; 
NSManagedObjectContext *context = 
[appDelegate managedObjectContext]; 
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Gameinfo"]; 
NSError *error = nil; 
NSArray *someArray = [context executeFetchRequest:request error:&error]; 
[[someArray objectAtIndex:0] setValue:[self showKey] forKey:@"score"]; // showKey gets the text from UITextField 
} 

-(IBAction)showTheory1; 

{ 
AppDelegate *appDelegate= [[UIApplication sharedApplication] delegate]; 
NSManagedObjectContext *context = 
[appDelegate managedObjectContext]; 
NSEntityDescription *entityDesc = 
[NSEntityDescription entityForName:@"Gameinfo" 
      inManagedObjectContext:context]; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:entityDesc]; 
NSManagedObject *matches = nil; 
NSError *error; 
NSArray *objects = [context executeFetchRequest:request 
              error:&error]; 
matches = [objects objectAtIndex:0]; 
NSLog (@"show us the current value: %@", [matches valueForKey:@"score"]); 
} 
+0

http://stackoverflow.com/questions/10868602/core-data-does-not-update/10868650#10868650 – Adam 2012-08-09 06:55:06

您根本没有保存这个值。你只是将它分配给Gameinfo对象。要真正将其保存,呼吁管理对象上下文​​方法:

... 
    [[someArray objectAtIndex:0] setValue:[self showKey] forKey:@"score"]; 
    NSError *saveError = nil; 
    [[appDelegate managedObjectContext] save:&saveError]; 
} 
+0

你是对的!多么愚蠢的事我错过了。非常感谢你,会接受 – 2012-08-09 07:01:56

它不看起来像你的任何地方打电话[context save:error]。这是将您的更改移至永久存储的原因。