在iOS应用程序中跨多个视图控制器共享某些数据的最佳方法是什么

时间:2014-11-26 18:45:45

标签: ios architecture singleton

我需要在iOS应用程序中的多个视图控制器之间共享一些数据(例如用户ID,当前密码等),当它工作时(当然,对于离线密码存储我将使用钥匙串)。在这种情况下分享它的最佳方式是什么?我应该创建一些单独的对象,如UserInfo,并从应用程序的所有部分访问其属性?这样做可以吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果在任何后端都找不到凭据等,我只需将它们存储在NSUserDefaults中,并将这些值设置为单例类中的属性。如果您使用像Parse这样的后端,那么您可以将它们的内置功能用于这样的东西(即PFUser)。

有些人喜欢将这些内容存储在AppDelegate中,但我不会这样做。我有一篇博客文章解释了为什么不到here.

此外,您始终可以使用segue来回传递数据,特别是prepareForSegue内部。有时它是有道理的,有时它并不是因为那些成员必须公开和暴露。这看起来像这样:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"SEGUE_ID"])
    {
        DestinationViewController *dvc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        dvc.someMember = whatever
    }
}
相关问题