专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
解档HMUserAccount
在程序运行的时候需要使用
AccessToken去访问新浪服务器的数据.为了防止每次程序重新启动都需要去加载AccessToken,我们已经将AccessToken保存到了沙盒里面.HMUserAccountViewModel提供加载沙盒里面的HMUserAccount方法loadUserAccount/** 从沙盒里面加载用户账号 returns: 之前保存的用户账号 */ private func loadUserAccount() -> HMUserAccount? { // 从沙盒里面解档账号 let account = NSKeyedUnarchiver.unarchiveObject(withFile: accountPath) as? HMUserAccount // 解档并不一定能解档出 // 判断账号是有在有效期内 // account?.expiresDate = Date(timeIntervalSinceNow: -100) if account != nil && account?.expiresDate?.compare(Date()) == ComparisonResult.orderedDescending { print("加载到有效的账号: \(account)") return account } // 没有加载到可用账号 return nil }在
HMUserAccountViewModel的init方法中调用loadUserAccount, 并将加载的结果赋值给userAccount,以后程序中要使用HMUserAccount都访问它(userAccount)/// 私有化构造函数 private override init() { super.init() // 在单例一创建的时候加载沙盒中的账号,并赋值给 userAccount userAccount = loadUserAccount() }- 在
AppDelegate中测试加载账号// TODO: 加载账号,能加载到账号表示用户登录了,加载不到账号表示用户没有登录 let userAccount = HMUserAccountViewModel.shared.userAccount print("AppDelegate加载账号: userAccount: \(userAccount)") - 运行结果: 可以加载保存在沙盒中的
HMUserAccount 测试
AccessToken过期的情况.重新给加载出来的账号设置expiresDate/** 从沙盒里面加载用户账号 returns: 之前保存的用户账号 */ private func loadUserAccount() -> HMUserAccount? { // 从沙盒里面解档账号 let account = NSKeyedUnarchiver.unarchiveObject(withFile: accountPath) as? HMUserAccount // 解档并不一定能解档出 // 判断账号是有在有效期内 account?.expiresDate = Date(timeIntervalSinceNow: -100) if account != nil && account?.expiresDate?.compare(Date()) == ComparisonResult.orderedDescending { print("加载到有效的账号: \(account)") return account } // 没有加载到可用账号 return nil }- 运行结果: 加载不到账号,因为
AccessToken过期了. - 至此,加载和保存
AccessToken相关的操作就完成了