我在目標c(對於iPhone應用程序)中創建登錄系統,並且我想記錄用戶是否登錄。我想最好的辦法是在驗證他們的憑證後使用全局變量BOOL isLoggedIn
。有人可以幫助我或給我一些建議,因爲我完全失去了如何做到這一點。全局變量目標C
在此先感謝
我在目標c(對於iPhone應用程序)中創建登錄系統,並且我想記錄用戶是否登錄。我想最好的辦法是在驗證他們的憑證後使用全局變量BOOL isLoggedIn
。有人可以幫助我或給我一些建議,因爲我完全失去了如何做到這一點。全局變量目標C
在此先感謝
-(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"];
當retrive它
if ([self fetchFromNSUserDefaults:@"isLoggedIn"]==nil || [[self fetchFromNSUserDefaults:@"isLoggedIn"] isEqualToString:@""]) {
//Go to Login
}
else
//all ready Login
+1 - 或者添加一個NSNumber作爲值@YES而不是字符串 - 然後檢查是否值!=(atsign)YES。使它更短一點imho – Mario
@Mario是的,你是對的先生。 –
您可以使用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];
你有沒有嘗試任何東西?有幾個類似的問題曾問過。先閱讀常見問題。 –
您可以在xcode項目的.pch文件中定義一個BOOL。那將會是你的全球變數,並且可以在項目周圍進行訪問。 –
不要去全球應該包含在答案 - 這是非常不鼓勵在客觀c設計模式 – Mario