专业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
    }
    
  • HMUserAccountViewModelinit 方法中调用 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 相关的操作就完成了

results matching ""

    No results matching ""