【问题标题】:Calculating the period of time from last app termination to the next launch in seconds计算从上一次应用程序终止到下一次启动的时间段(以秒为单位)
【发布时间】:2017-05-30 01:52:41
【问题描述】:

我需要知道从应用程序终止到应用程序再次启动经过了多长时间。我想您必须在 appIsTerminated 时将 startDate 保存在 appDelegate 中来存储它。然后,您必须在 appDidLaunch 和 appDelegate 中访问该值,然后计算这些时间之间的差异。我需要以秒为单位的差异,并且我想在我的 viewController 中使用差异。如何在 swift 3、Xcode 8 中执行此操作?

【问题讨论】:

    标签: ios swift xcode nsdate nsuserdefaults


    【解决方案1】:

    Date 类有一个timeIntervalSince 函数:

    date2.timeIntervalSince(date1)

    返回的TimeInterval 是从date1date2 的秒数。

    如果您想在视图控制器中使用它,可以将其保存在 UserDefaults 之类的地方,然后从那里访问它。

    【讨论】:

      【解决方案2】:

      是的,你是对的,这是最简单的解决方案。

      public func applicationDidFinishLaunching(_ application: UIApplication){
      
          UserDefaults.standard.set(Date(), forKey: "latestLaunchDate")
          // your code
          return true
      }
      
      
      public func applicationWillTerminate(_ application: UIApplication) {
           UserDefaults.standard.set(Date(), forKey: "latestTerminationDate")
           //just to ensure that it is saved
           UserDefaults.standard.syncronize()
      }
      

      然后在你的 ViewController 中

      class YourViewController: UIViewController {
      
          func method() {
               if let launchDate = UserDefaults.standard.object(forKey:  "latestLaunchDate") as? Date,
                  let terminationDate = UserDefaults.standard.object(forKey: "latestTerminationDate") as? Date
               {
                   // your duration
                   let terminationDuration = launchDate.timeIntervalSince(terminationDate)
               }
          }
      }
      

      因此,在上面的示例中,只有当两个日期(启动和终止都已设置)时,您才会到达 if 正文。 更好的方法是为此目的定义一些全局常量,这样您就不会在某处的字符串中出现拼写错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-29
        • 1970-01-01
        • 1970-01-01
        • 2020-07-05
        • 2010-11-30
        • 1970-01-01
        相关资源
        最近更新 更多