2013-03-07 111 views
4

我正在構建一個應用程序,在登錄時,用戶名/密碼的正確組合返回一些基本的用戶信息(名字,姓氏,用戶類型,公司ID等)。在登錄時存儲用戶信息供以後使用

我將在整個應用程序中需要這些值和字符串來檢索用戶特定的數據。

我能在登錄所有這些值和字符串存儲在一個NSObject或NSData的子類,這樣我以後可以稱呼它來獲取我需要的項目?我怎樣才能做到這一點?還是有更好的選擇?

+0

您可以將其存儲在** 1。**用戶默認或** 2。**鑰匙串中。這取決於你需要什麼。 – holex 2013-03-07 17:02:45

+0

您可以將數據保存在NSUserDefaults中。我最近發佈了一篇關於如何在NSUserDefaults中存儲自定義類的文章http://stackoverflow.com/a/15242939/767730。 – Anupdas 2013-03-07 17:04:02

+0

請注意,NSUserDefaults在應用程序卸載時消失;鑰匙串值將被保留。 – magma 2013-03-07 17:29:19

回答

6

如果你只是存儲從登錄成功像你說的,名字,姓氏等,我會NSUserDefaults的使用返回的數據。 如果您打算存儲任何敏感信息,如用戶名或密碼或任何其他需要額外保密的信息,我會建議使用鑰匙串。

4

我會使用鑰匙串,因爲它是安全的。勾選此STKeychain

+0

鑰匙扣是安全的,但不要把你所有的信任它:http://www.raywenderlich.com/45645/ios-app-security-analysis-part-1 – allprog 2013-09-09 16:36:14

3

您可以使用NSUserDefaults。創建一個用戶模型。實施NSCoding協議。在從NSUserDefaults獲取時存檔並取消歸檔。

@interface User: NSObject<NSCoding> 

    @property (nonatomic, copy) NSString *firstName; 
    @property (nonatomic, copy) NSString *lastName; 

    - (void)save; 
    + (id)savedUser; 

//User.m

#define kSavedUser @"SavedUser" 

#pragma mark - Encoding 
- (void)encodeWithCoder:(NSCoder *)encoder 
{ 
    [encoder encodeObject:self.firstName forKey:@"FirstName"]; 
    [encoder encodeObject:self.lastName forKey:@"LastName"] 

} 

#pragma mark - Decoding 
- (id)initWithCoder:(NSCoder *)decoder 
{ 
    self = [super init]; 
    if (self) 
    { 
     _firstName = [decoder decodeObjectForKey:@"FirstName"]; 
     _lastName = [decoder decodeObjectForKey:@"LastName"]; 

    } 
    return self; 
} 


-(void)save 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self]; 
    [defaults setObject:data forKey:kSavedUser]; 
    [defaults synchronize]; 
} 

+ (id)savedUser 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSData *data = [defaults objectForKey:kSavedUser]; 
    if (data) 
    { 
     return [NSKeyedUnarchiver unarchiveObjectWithData:data]; 
    } 
    return nil; 
} 

+ (void)clearUser 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults removeObjectForKey:kSavedUser]; 
    [defaults synchronize]; 
} 

現在,當你想要檢索

User *user = [User savedUser]; 

編輯您可以創建

User *user = [[User alloc]init]; 
user.firstName = @""; 
user.lastName = @""; 
[user save]; 

一個實例: 如果您想要清除數據,請撥打st atic方法刪除保存的用戶信息

[User clearUser]; 
+0

如何清除此信息在用戶註銷 – 2014-03-10 09:30:35

+0

@KiritVaghela包括明確的信息方法。 – Anupdas 2014-03-10 09:41:45

相關問題