我设计了一个登录应用程序。我已经在sqlite数据库中输入了帐户数据。但是,当我用帐户用户名和密码登录时,我希望这些可以被所有视图控制器访问。因为我有不同的控制器会更新帐户的详细信息。需要实现细节.. 谢谢在Objective C中创建全局变量
回答
避免全局变量 ,而您可以使用Singleton类来存储应用程序范围的凭据信息。
但请记住,在应用程序中存储凭据的最佳方式是使用Apple Keychain,您可以在Apple网站上找到API参考。
至于有人说 - 避免全局变量,但如果你想他们肯定的 - 不喜欢它的C语言:
在一个文件中
中的所有其他文件定义这个变量是指其与extern
关键字
使用单: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?
您也可以直接在任何需要的地方直接访问钥匙串。你也应该问自己为什么你的代码需要访问一个用户名/密码。听起来像是一个破碎的设计。
简单地说:不要这样做!
我建议将证书存储在钥匙串中。但不要使用Apple提供的示例代码。它不起作用。我在我的项目中使用SSKeychain。
如果您不需要存储凭据,您应该像aleroot建议的那样仅使用一个实例的单例或类。
三个答案:
- 不要这样做。
- 如果您必须这样做,请使用Singleton。
- 要非常方便地访问用户名和非机密(即密码)变量,请使用NSUserDefaults。
感谢所有的快速建议。我实际上需要在控制器之间访问的用户名。所以一旦用户用他的用户名(和密码)登录,取决于用户名(从数据库中选择),用户将被赋予某些特权。如何去做这件事? – user2741735
使用NSUserDefaults:https://developer.apple.com/library/mac/documentation/cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference。html NSUserDefault对象通过应用程序关闭和应用程序更新/升级持续存在。如果您的用户注销,请确保清除该对象。 – ArtSabintsev
- 1. 在asp.net中创建全局变量C#
- 2. Objective-C和全局变量
- 3. objective-c - 全局变量
- 4. 在Objective-C全局字符串变量
- 5. Objective-c在循环中创建变量
- 6. Objective C,类和全局变量
- 7. Objective-C,全局变量和线程
- 8. 创建全局变量
- 9. 在TypeScript中创建全局变量
- 10. 在Postgresql中创建全局变量
- 11. 创建全局变量?
- 12. C++构建全局变量
- 13. 创建一个全局类的objective-c?
- 14. 如何创建一个全局变量?
- 15. 如何在Objective-C中创建类的全局实例C
- 16. 如何在C#中创建一个全局变量?
- 17. 如何在iPhone中使用Objectvie-C创建全局变量?
- 18. 在Objective-C中,如何创建一个全局可访问的全局配置?
- 19. 如何在Objective C中全局访问这个变量?
- 20. Objective-C中的全局变量在ios proj
- 21. 在全局变量中丢失数据Objective-C Iphone
- 22. 如何在Objective-C中声明一个全局变量?
- 23. 在一个类中创建一个es6变量全局变量
- 24. 声明作为全局变量在类中创建的变量
- 25. C++全局变量
- 26. 全局变量,C
- 27. C#全局变量
- 28. C++:全局变量
- 29. C#中的全局变量
- 30. c中的全局变量
您的意思是应用程序可以访问实际的密码?这不是一个好主意。像其他人一样使用钥匙串。 – jcm
使用DefaultUser ..它可能是最适合你:) – iPatel