-1

我正在目标 c 中创建一个登录系统(用于 iPhone 应用程序),我想记录用户是否登录。我认为最好的方法是BOOL isLoggedIn在验证他们的凭据后使用全局变量。有人可以帮助我或给我一些建议,因为我完全不知道如何做到这一点。

提前致谢

4

3 回答 3

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

    if (standardUserDefaults) {
        [standardUserDefaults setBool:isLoggedIn forKey:@"isLoggedIn"];
        [standardUserDefaults synchronize];
    }
}

使用 NSUserDefaults,它将保留该值,直到您的应用程序从手机中删除。

于 2013-06-03T06:34:30.830 回答
1

使用这两个功能

   -(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
于 2013-06-03T06:40:31.383 回答
1

您可以使用 NSUserDefaults 来存储应用程序的登录状态,如其他人所述。该值将保持不变,直到应用程序被删除。即,即使您终止应用程序或重新启动设备,如果最后一个值是“登录”。

如果您想在应用程序被终止或设备重新启动时“重置”用户的状态,那么另一种方法是将您的用户对象设置为单例。当应用程序被终止或设备重新启动时,与 NSUserDefault 不同,用户的状态将被重置(因为对象不再存在)并且用户将需要再次登录。使用此方法: http: //lukeredpath.co.uk/blog/a-note-on-objective-c-singletons.html创建用户对象的单例

+ (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];
于 2013-06-03T06:56:31.530 回答