ios - 在 Swift 中将变量从前台传递到后台

标签 ios swift background-process

我正在开发一个 iOS 应用程序,我想记录用户按下特定按钮的时间并保留它。稍后我会在后台使用这个时间记录。有没有一种好的方法可以在不调用 NSUserDefaults 或 CoreData 或任何其他数据库的情况下做到这一点?

我对 iOS 开发非常陌生。我认为这很可能是一个天真的问题。但我只是好奇。请不要笑我哈哈。

编辑:这确实是一个非常天真的问题哈哈。

最佳答案

确保数据在应用程序中的任何位置都可用并且仅在每个应用程序 session 中持续存在的一种简单方法是使用单例。 类似这样的东西。

// Create a class to store the data
class SessionData : NSObject {

    // Create a shared instance of your class
    static let sharedInstance = SessionData()

    // Create a variable to store the date object
    var timeStore:NSDate?
}

这意味着您可以在应用中的任何位置获取设置此数据如下。

// Get
if let time = SessionData.sharedInstance.timeStore {
    println(time)
}

// Set
SessionData.sharedInstance.timeStore = NSDate()

值得一提的是,尽管上述方法是有效的,但您可以通过重新考虑应用程序结构并在类之间传递数据来避免这样做。您应该看看在Delegation .

正如 @CouchDeveloper 在下面的评论中提到的,您可能需要包含一个调度队列,以防止在两个或多个类尝试同时读取和/或写入数据的情况下发生崩溃或锁定。

关于ios - 在 Swift 中将变量从前台传递到后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31401265/

相关文章:

ios - 在 UIViewController 中显示 NavigationController

iOS 在解除 ViewController 时停止 for 循环内的所有当前处理

ios - 如何在 UIInputViewController 中使用 UICollectionView 进行自定义键盘扩展?

swift - "assignment to ' - 不可变值 '"的初始化的 'cell' 从未使用过;考虑用分配给 '_' 替换或删除它

swift - iOS 10 - NSKeyValueObservation 在 deinit 时崩溃

ios - 定期后台获取

ios - 增加 UILabel.text 中第一个字母的字体大小

xcode - 在 Swift 中调用函数时的预期声明

java - Android应用程序: Run code on a timer from the background

iphone - 取消调度队列