我需要知道从应用程序终止的那一刻起到应用程序再次启动的时间。我猜你必须在appIsTerminated时将它保存在appDelegate中来存储startDate。然后你必须在appDidLaunch中访问该值,同样在appDelegate中,然后计算这些时间之间的差异。我需要秒的差异,我想在viewController中使用差异。我如何在swift 3,Xcode 8中执行此操作?
答案 0 :(得分:3)
Date
类有一个timeIntervalSince
函数:
date2.timeIntervalSince(date1)
返回的TimeInterval
是从date1
到date2
的秒数。
如果您想在视图控制器中使用它,可以将其保存在UserDefaults
之类的地方,然后从那里访问它。
答案 1 :(得分: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主体。 更好的方法是为此目的定义一些全局常量,这样你就不会在字符串中输入拼写错误。