我正在学习Objective C& Xcode,通过我的第一个应用程序。 首先,用户必须登录。然后他可以做几件事,比如加入团队或更改他的数据(用户名,电子邮件......)。
登录完成,工作正常。 问题:
是否可以设置一个我可以从每个View Controller到达的变量?
我尝试使用segues,但我认为在每个View Controller中定义它都非常困难。
我正在寻找一个全局变量,我可以从应用程序的任何地方到达,这可能吗? 或者还有其他方法可以解决这个问题吗?
谢谢你的帮助! 以马内利
答案 0 :(得分:9)
我个人建议你使用Singleton模式
我不建议把所有内容都放到AppDelegate中,这个类不适用于此。
相反,您可以做的是创建一个专用类(名称类似于" ApplicationState"或适合您的任何类型),并将您需要的属性放在其头文件中,并进行单例管理.m中的代码(以及标题中的原型)
如果您需要单身人士管理代码,请点击此处:
+ (ApplicationState*)sharedInstance
{
static ApplicationState* sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
然后,如果你在标题中:
@property (nonatomic, strong) NSObject* object;
+ (ApplicationState*)sharedInstance;
您可以通过包含ApplicationState头文件从任何地方获取此变量,并调用:
[[ApplicationState sharedInstance] object];
答案 1 :(得分:1)
如果简单,可以使用NSUserdefault。
保存强>
[[NSUserDefaults standardUserDefaults]setObject:username forKey:@"userName"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"username saved = %@", username);
<强>读:强>
NSString *username = [[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
NSLog(@"username retrieved = %@", username);
答案 2 :(得分:0)
您也可以使用AppDelegate。
在AppDelegate.h中定义一个属性,
@property (nonatomic, strong) NSString *userName;
然后在视图控制器中,导入AppDelegate.h后,
AppDelegate *appDel = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"%@", appDel.userName);
答案 3 :(得分:0)
你可以把它们放在plist中,或者你可以创建Objective-C类来初始化变量并导入.pch文件中的标题,然后这个带有数据的类将在每个ViewController中可用