在全局数据中存储和检索数据 Class

Store and Retrieve Data in Global Data Class

我有兴趣单独存储数据 class,以允许从应用程序中的任何视图保存和访问这些数据。为此,我首先在名为 GlobalData.swift 的项目中创建了一个空的 class。在此文件中,我有以下源代码:

import UIKit

    class Main {  
        var drinkData:PFObject?
        init(drinkData:PFObject) {
            self.drinkData = drinkData
        }
    }

在我的 Table 视图中,当用户选择一个单元格时,我正在保存 Parse PFObject 以便以后可以轻松访问它。在我的 Table class 中,我有以下代码:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    if let indexPath = self.tableView.indexPathForSelectedRow {
        let row = Int(indexPath.row)

        let localDrinkData = Main(drinkData:(objects?[row] as PFObject!))

        print("global : \(localDrinkData.drinkData)")

    }
} 

现在可以完美运行了。 print 行将完全按照我的意愿执行(打印出 PFObject 和该行内的所有项目),问题是我需要保存它然后才能在不同 class。

我的问题仍然存在。我怎样才能在不同的 class 中调用 Main drinkData 并能够像我在上面的函数中所做的那样打印它:

print("global : \(localDrinkData.drinkData)")

这是我获得此设计的原始源代码的地方。显然,我做了一些修改:Access variable in different class - Swift

非常感谢!

您能够从 class Main() 访问相同数据的唯一方法是传递您正在更改的 Main() 实例。如果您想从其他 classes 访问 Main() 而无需传递您的 Main() 实例,我建议将 Main() 转换为 Singleton class.

import UIKit

class Main {
    static let sharedMain = Main()
    var drinkData:PFObject?
}

如果你想 set/access 主数据,它看起来像这样:

设置:Main.sharedMain.drinkData = //insert PFObject

阅读:let sharedData = Main.sharedMain.drinkData

旁注:我建议您将 class 的名称更改为 "DrinkManager",将自定义 classes 称为 Main 感觉不对。