Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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 全局变量目标C_Ios_Objective C_Global Variables - Fatal编程技术网

Ios 全局变量目标C

Ios 全局变量目标C,ios,objective-c,global-variables,Ios,Objective C,Global Variables,我正在objective c中创建一个登录系统(用于iPhone应用程序),我想记录用户是否登录。我想最好的方法是在我验证了他们的凭证后使用一个全局变量BOOL isLoggedIn。有人能帮我一下或给我一些建议吗?因为我完全不知道该怎么做 提前谢谢 -(void)saveToUserDefaults:(BOOL)isLoggedIn { NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults

我正在objective c中创建一个登录系统(用于iPhone应用程序),我想记录用户是否登录。我想最好的方法是在我验证了他们的凭证后使用一个全局变量
BOOL isLoggedIn
。有人能帮我一下或给我一些建议吗?因为我完全不知道该怎么做

提前谢谢

-(void)saveToUserDefaults:(BOOL)isLoggedIn
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if (standardUserDefaults) {
        [standardUserDefaults setBool:isLoggedIn forKey:@"isLoggedIn"];
        [standardUserDefaults synchronize];
    }
}
使用NSUserDefaults,它将保留该值,直到您的应用程序从手机中删除

使用这两个函数

   -(void)addToNSUserDefaults:(id)pobjValue forKey:(NSString *)pstrKey{
       NSUserDefaults *objUserDefaults = [NSUserDefaults standardUserDefaults];
       [objUserDefaults setObject:pobjValue forKey:pstrKey];
       [objUserDefaults synchronize];
   }

   -(id)fetchFromNSUserDefaults:(NSString *)pstrKey{
       NSUserDefaults *objUserDefaults = [NSUserDefaults standardUserDefaults];
       return [objUserDefaults objectForKey:pstrKey];
   }
当你储存它的时候

        [self addToNSUserDefaults:@"YES" forKey:@"isLoggedIn"];
什么时候再查

       if ([self fetchFromNSUserDefaults:@"isLoggedIn"]==nil || [[self fetchFromNSUserDefaults:@"isLoggedIn"] isEqualToString:@""]) {
             //Go to Login
       }
       else 
           //all ready Login

您可以使用NSUserDefaults存储其他应用程序声明的应用程序登录状态。在删除应用程序之前,该值将保持不变。i、 e.即使在您关闭应用程序或重新启动设备时,如果最后一个值为“登录”

如果您想在应用程序被终止或设备重新启动时“重置”用户的状态,那么另一种方法是将用户的对象设置为单例。当应用程序被终止或设备重新启动时,与NSUserDefault不同,用户的状态将被重置(因为对象不再存在),用户将需要再次登录。使用此方法:创建用户对象的单例

+ (id)sharedInstance
{
  static dispatch_once_t pred = 0;
  __strong static id _sharedObject = nil;
  dispatch_once(&pred, ^{
    _sharedObject = [[self alloc] init]; // or some other init method
  });
  return _sharedObject;
}
将上述内容添加到用户的类中,然后您可以添加与用户状态相关的适当属性,例如BOOL isLoggedOn,然后您可以访问以下内容:

BOOL isLoggedIn = [[User sharedInstance] isLoggedIn];

你试过什么吗?之前有两个类似的问题。首先阅读常见问题。您可以在xcode项目的.pch文件中定义一个BOOL。这将是您的全局变量,并且可以在整个项目中访问。答案中应该包含“不要走向全局”-这在objective c设计模式“BOOL isLoggedIn”中是非常不鼓励的-这是个坏主意。您需要提供某种类型的绑定。也就是说,不要依赖于
BOOL
标志;而是将授权绑定到身份验证。要了解原因,请参阅。+1-或将NSNumber添加为值@YES而不是字符串-然后只需检查值是否!=(示意)是的。让它短一点imho@Mario是的,你说得对,先生。