在哪里保存核心数据上下文......?

时间:2012-06-22 09:27:28

标签: iphone objective-c ios core-data nsmanagedobjectcontext

我已经经历了几个类似的问题,但可以就此达成一个明确的观点...

我认为在applicationWillTerminate中保存上下文应该已经足够了但是会对核心数据暂存区进行太多更改会增加应用程序的内存...?

我应该更频繁地保存它吗?我知道一次又一次地保存上下文会降低设备闪存驱动器的使用寿命,苹果建议我们不要经常这样做。

是否有其他任何情况下应用程序忘记了核心数据上下文appart从哪里终止...?

感谢您的投入..

2 个答案:

答案 0 :(得分:0)

应用程序的保存行为取决于应用程序。我的意思是,在基于文档的应用程序中,用户希望在他点击cmd-S时保存文档。所以你应该这样做。越来越多的用户希望他们使用的应用程序能够自动保存。

从用户的角度来看,保存行为是一种设计选择。用户界面和交互设计决定了应用程序的行为方式。

除了这些考虑因素,当然也不能忽视技术现实。内存使用,崩溃和数据丢失,撤消管理,电池耗尽,所有这些都会对应用程序行为和最终用户产生影响。我真的不认为SSD预期寿命是你应该考虑的因素。

最后一句话:您可以为给定商店提供多个对象上下文。你可以有孩子的情境。因此,您可以保存部分数据而不是完整的更改积压,您可以优先考虑某些实体而不是其他实体......许多实现选择和可能的策略,但它们应该由用户界面和交互设计驱动。他们必须。

保存对用户有意义。

答案 1 :(得分:-1)

这是将数据存储到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");  
       }  
}