永久保存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"]);
}
答
您根本没有保存这个值。你只是将它分配给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]
。这是将您的更改移至永久存储的原因。
http://stackoverflow.com/questions/10868602/core-data-does-not-update/10868650#10868650 – Adam 2012-08-09 06:55:06