注销后需要重新启动应用程序以创建新的managedObjectContext

时间:2013-08-02 00:58:57

标签: ios core-data restkit appdelegate

我有一个iOS应用程序,它使用CoreData来保存通过RestKit从服务器检索的数据。我创建了一个注销按钮,在按下时清除所有NSUserDefaults并将用户发送回登录屏幕。

当应用首次启动时,managedObjectStore和所有其他CoreData功能都会在appDidFinishLaunchingWithOptions的{​​{1}}方法中生成。但是,当我注销应用程序并尝试重新登录异常时,因为我的appDelegate为零。它是零,因为我选择不将它从logout viewController传递给登录viewController。我想清除旧的并为新用户创建新的。

当我点击退出并移至登录屏幕时,我想创建一个新的managedObjectContext。这样的事情可能吗?基本上我需要在用户按下注销时重新启动应用程序。

有人可以告诉我这样的事情会怎样吗?我是新手,所以如果这是不恰当或不必要的,我愿意学习正确/适当的方式!

1 个答案:

答案 0 :(得分:0)

就人机界面指南而言,重新启动应用程序是非常糟糕的做法。不惜一切代价避免这种情况。

尝试在didLogin方法中创建数据实例,如果您愿意,登录视图控制器可以从委托中调用它。

否则,您可以在注销时将managedObjectStore设置为nil,并为其设置一个访问器方法,如下所示:

    NSManagedObjectContext *_sharedInstance;
-(NSManagedObjectContext*) getManagedOBjectContext {
    if (_sharedInstance==nil) {
        _sharedInstance = <do create>;
     }
    return _sharedInstance;
}

///when we logout
-(IBaction) didLogout {
     <cleanup>
    _sharedInstance = nil;
}

这是单身人士与懒惰加载相结合的一个例子。它将按需创建,只有一次,直到下一次设置为nil。