保存用户/帐户以存储和传递应用程序

时间:2014-10-09 11:31:52

标签: ios nsuserdefaults

我正在使用AFNetworking 2.0和Mantle来连接API并返回用户帐户。

我的计划是调用以application:didFinishLaunchingWithOptions:方法获取用户数据的函数。然后我会encode the data and save the user into NSUserDefaults

这是接近此任务的最佳方式吗?有什么替代品? (我想远离创造单身人士)


更新

有些代码可能有助于展示我脑子里的想法:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSData *encodedUserData = [defaults objectForKey:@"currentUser"];
if (encodedUserData) {
    self.currentUser = [NSKeyedUnarchiver unarchiveObjectWithData:encodedUserData];
} else {
    NSLog(@"No current user");
    // Show login ViewController
}

2 个答案:

答案 0 :(得分:0)

如果您每次用户启动应用程序时都要获取用户帐户,则无需将其存储在NSUserDefaults中。只需使用单例或静态对象将其存储为模型对象类型。

static Account *_userAccount = nil;
+ (Account*)userAccount {
    return _userAccount;
}
+ (void)setUserAccount:(Account*)account {
    _userAccount = account;
}

答案 1 :(得分:0)

您可以将NSUserDefaults用于此目的,并可以通过应用程序访问它。

// to save data in userdefaults

[[NSUserDefaults standardUserDefaults] setObject:@"your object" forKey:@"your key"];
[[NSUserDefaults standardUserDefaults] synchronize];


// for getting saved data from User defaults

NSData *encodedUserData = [[NSUserDefaults standardUserDefaults] objectForKey:@"your key"];
if (encodedUserData) {
    self.currentUser = [NSKeyedUnarchiver unarchiveObjectWithData:encodedUserData];
} else {
    NSLog(@"No current user");
    // Show login ViewController
}