Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用singleton类跟踪用户信息是否合适?_Ios_Objective C_Design Patterns_Login_Singleton - Fatal编程技术网

Ios 使用singleton类跟踪用户信息是否合适?

Ios 使用singleton类跟踪用户信息是否合适?,ios,objective-c,design-patterns,login,singleton,Ios,Objective C,Design Patterns,Login,Singleton,我正在开发一个需要用户登录的IOS应用程序。它有一个主视图控制器,用于检查用户是否已登录。如果没有,它将转到另一个显示登录提示的视图控制器。当用户登录时,主视图控制器将取消登录视图,并显示适合登录用户的信息 该应用程序还将用户凭据存储在设置列表中。如果存在该信息,应用程序将尝试使用存储的凭据登录。如果成功,主视图控制器将加载用户适当的信息。如果没有,它将转到登录视图控制器 我最终在主视图和登录视图控制器中复制了验证用户id和密码的代码。然后,我需要将prepareforsgue方法中的用户实例传

我正在开发一个需要用户登录的IOS应用程序。它有一个主视图控制器,用于检查用户是否已登录。如果没有,它将转到另一个显示登录提示的视图控制器。当用户登录时,主视图控制器将取消登录视图,并显示适合登录用户的信息

该应用程序还将用户凭据存储在设置列表中。如果存在该信息,应用程序将尝试使用存储的凭据登录。如果成功,主视图控制器将加载用户适当的信息。如果没有,它将转到登录视图控制器

我最终在主视图和登录视图控制器中复制了验证用户id和密码的代码。然后,我需要将prepareforsgue方法中的用户实例传递给任何后续视图

我应该实现一个单例类来跟踪登录的用户吗?这很诱人,因为它似乎可以节省很多工作。是否最好将我在登录视图控制器中使用的用户登录方法委托回主视图控制器,并在每次推送新视图控制器时在prepareforsegue中传递用户实例

我应该实现一个单例类来跟踪登录的用户吗

你当然可以做到。但是,您也可以创建一个无状态帮助器类,根据需要从备份存储读取凭据,从而避免创建单例

我最终在主视图和登录视图控制器中复制了代码

无状态帮助器方法(即其中只有class
(+)
方法的类)可以防止代码复制:最终复制的代码将进入共享帮助器类

该应用程序还将用户凭据存储在设置列表中


如果未加密的密码是用户凭据的一部分,则这不是一个安全的解决方案。您应该使用将凭据保存在受保护的存储中。

我还认为值得一提的是“我最终复制了代码”。任何时候,只要有人意识到这是他们重新思考代码并做出改进的机会。达斯宾莱特:谢谢!你的建议使我走上了正确的道路。我很感激。