我设计了一个登录应用。我在sqlite数据库中输入了帐户数据。但是,当我使用帐户用户名和密码登录时,我希望所有视图控制器都可以访问这些用户名和密码。因为,我有不同的控制器,将更新帐户的详细信息。需要实施细节.. 感谢
答案 0 :(得分:2)
使用单身人士:http://www.galloway.me.uk/tutorials/singleton-classes/
我有一个类似这样的项目(注意我使用的是iOS钥匙串而不是数据库,但我在这里隐藏了这些细节):
@interface User : NSObject
@property (nonatomic, strong) NSString *username;
+ (User *)currentUser;
@end
@implementation User
+ (User *)currentUser
{
static User *currentUser = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
currentUser = [[User alloc] initFromKeychain];
});
return currentUser;
}
@end
有许多方法可以做单身人士(取决于你想要了解某人是否可以创建你的班级的非单身实例)。例如:What should my Objective-C singleton look like?
您也可以直接在任何需要的地方访问钥匙串。您还应该问问自己为什么这么多代码需要访问用户名/密码。听起来像一个破碎的设计。
答案 1 :(得分:1)
避免全球化 变量,而不是您可以使用Singleton类来存储应用程序范围的凭据信息。
但请记住,在应用中存储凭据的最佳方式是使用Apple Keychain,您可以在Apple网站上找到API参考。
答案 2 :(得分:1)
正如所说 - 避免全局变量,但如果你想要它们肯定 - 就像用c语言一样:
在一个文件中定义此变量
在所有其他文件中使用extern
关键字
答案 3 :(得分:1)
简单地说:不要这样做!
我建议将凭据存储在钥匙串中。但是不要使用Apple提供的示例代码。它不起作用。我在我的项目中使用SSKeychain。
如果您不需要存储凭据,则应该像aleroot建议的那样使用单例或只有一个实例的类。
答案 4 :(得分:0)
三个答案: