ios - 在 iOS 应用程序中跨多个 View Controller 共享某些数据的最佳方式是什么

标签 ios architecture singleton

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

提前致谢。

最佳答案

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

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

此外,您始终可以使用 segues 来回传递数据,特别是在 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
    }
}

关于ios - 在 iOS 应用程序中跨多个 View Controller 共享某些数据的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27156709/

相关文章:

architecture - 实用主义还是纯洁——我们应该依赖 GUI 框架来存储程序状态吗?

swift - 如何更改 Realm 单例属性值

unit-testing - 单元测试中需要Guice吗?

ios - 如何在我的自定义 cocoapod 中导入 Alamofire/AFNetworking

ios - swift 。谷歌地图 View 显示问号而不是字母

ios - fetchedResultsController 不更新过滤器

java - Spring相当于EJB Singleton来维护状态

ios - SFSafariViewController 中 'Done' 的默认行为是什么?

c++ - 精心设计的应用程序的开源示例

ssl - 使用 API 构建应用程序