登录时存储用户信息以供日后使用

时间:2013-03-07 16:59:47

标签: ios objective-c xcode

我正在构建一个应用程序,在登录时,用户名/密码的正确组合会返回一些基本的用户信息(firstName,lastName,userType,companyID等)。

我将在整个应用程序中需要这些值和字符串来检索用户特定的数据。

我可以在NSObject或NSData子类中登录时存储所有这些值和字符串,以便我以后可以调用它来检索我需要的项目吗?我怎样才能做到这一点?还是有更好的选择?

3 个答案:

答案 0 :(得分:6)

如果您只是存储从成功登录返回的数据,如您所说,名字,姓氏等。我会使用NSUserDefaults。 如果您打算存储任何敏感信息,如用户名或密码或其他需要额外保密的信息,我建议您使用钥匙串。

答案 1 :(得分:4)

我会使用Keychain因为它是安全的。请检查此STKeychain

答案 2 :(得分: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 alloc]init];
user.firstName = @"";
user.lastName = @"";
[user save];

当您想要检索

User *user = [User savedUser];

编辑: 如果要清除数据,请调用静态方法以删除已保存的用户信息

[User clearUser];
相关问题