2013-06-03 133 views
-1

我在目標c(對於iPhone應用程序)中創建登錄系統,並且我想記錄用戶是否登錄。我想最好的辦法是在驗證他們的憑證後使用全局變量BOOL isLoggedIn。有人可以幫助我或給我一些建議,因爲我完全失去了如何做到這一點。全局變量目標C

在此先感謝

+0

你有沒有嘗試任何東西?有幾個類似的問題曾問過。先閱讀常見問題。 –

+0

您可以在xcode項目的.pch文件中定義一個BOOL。那將會是你的全球變數,並且可以在項目周圍進行訪問。 –

+0

不要去全球應該包含在答案 - 這是非常不鼓勵在客觀c設計模式 – Mario

回答

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

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

NSUserDefaults的使用,直到您的應用程序從手機中刪除將保留價值。

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"]; 

當retrive它

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

+1 - 或者添加一個NSNumber作爲值@YES而不是字符串 - 然後檢查是否值!=(atsign)YES。使它更短一點imho – Mario

+0

@Mario是的,你是對的先生。 –

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];