我已经经历了几个类似的问题,但可以对此达成明确的观点......
我认为将上下文保存在applicationWillTerminate
: 中应该足够了,但是在核心数据暂存器上进行太多更改会增加我的应用程序的内存...?
我应该更频繁地保存它吗..?我知道一遍又一遍地保存上下文会减少设备闪存驱动器的寿命,苹果建议我们应该减少这样做的频率。
是否有任何其他情况下应用程序忘记了核心数据上下文 appart 从它被终止的地方......?
感谢您的输入..
我已经经历了几个类似的问题,但可以对此达成明确的观点......
我认为将上下文保存在applicationWillTerminate
: 中应该足够了,但是在核心数据暂存器上进行太多更改会增加我的应用程序的内存...?
我应该更频繁地保存它吗..?我知道一遍又一遍地保存上下文会减少设备闪存驱动器的寿命,苹果建议我们应该减少这样做的频率。
是否有任何其他情况下应用程序忘记了核心数据上下文 appart 从它被终止的地方......?
感谢您的输入..
您的应用程序的保存行为取决于...取决于应用程序。我的意思是,在基于文档的应用程序中,用户希望在点击 cmd-S 时保存文档。所以你应该这样做。越来越多的用户希望他们使用的应用程序能够自动保存。
从用户的角度来看,保存行为是一种设计选择。用户界面和交互设计决定了应用程序的行为方式。
除了这些考虑之外,当然也不能忽视技术现实。内存使用、崩溃错误和数据丢失、撤消管理、电池消耗,所有这些都会对应用程序行为和最终用户产生影响。我真的不认为 SSD 的预期寿命是您应该考虑的因素。
最后一句话:对于给定的商店,您可以拥有多个对象上下文。您可以有子上下文。因此,您可以保存部分数据而不是完整的变更积压,您可以将某些实体优先于其他实体......许多实现选择和可能的策略,但它们应该由用户界面和交互设计驱动。他们必须。
在对用户有意义时保存。
这是一种将数据存储到 Coredata 的方法。
-(void) setEmailContactsToCoredata:(id)sender
{
NSManagedObjectContext *context=[appDelegate managedObjectContext];
NSManagedObject *newData = [NSEntityDescription insertNewObjectForEntityForName:@"EmailContacts" inManagedObjectContext:context];
[newData setValue:self.emailTextField.text forKey:@"email_ID"];
NSError *error;
if (![context save:&error])
{
NSLog(@"There was an error while inserting Data into coredata");
}
else
{
NSLog(@"Success fully Saved your email id");
}
}