我有一个iOS应用程序,它使用CoreData来保存通过RestKit从服务器检索的数据。我创建了一个注销按钮,在按下时清除所有NSUserDefaults
并将用户发送回登录屏幕。
当应用首次启动时,managedObjectStore
和所有其他CoreData功能都会在appDidFinishLaunchingWithOptions
的{{1}}方法中生成。但是,当我注销应用程序并尝试重新登录异常时,因为我的appDelegate
为零。它是零,因为我选择不将它从logout viewController传递给登录viewController。我想清除旧的并为新用户创建新的。
当我点击退出并移至登录屏幕时,我想创建一个新的managedObjectContext
。这样的事情可能吗?基本上我需要在用户按下注销时重新启动应用程序。
有人可以告诉我这样的事情会怎样吗?我是新手,所以如果这是不恰当或不必要的,我愿意学习正确/适当的方式!
答案 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。