我正在目标 c 中创建一个登录系统(用于 iPhone 应用程序),我想记录用户是否登录。我认为最好的方法是BOOL isLoggedIn
在验证他们的凭据后使用全局变量。有人可以帮助我或给我一些建议,因为我完全不知道如何做到这一点。
提前致谢
我正在目标 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 来存储应用程序的登录状态,如其他人所述。该值将保持不变,直到应用程序被删除。即,即使您终止应用程序或重新启动设备,如果最后一个值是“登录”。
如果您想在应用程序被终止或设备重新启动时“重置”用户的状态,那么另一种方法是将您的用户对象设置为单例。当应用程序被终止或设备重新启动时,与 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];