我对将数据存储在sperate类中感兴趣,以允许从应用程序中的任何视图保存和访问此数据。为此,我首先在我的项目中创建了一个名为GlobalData.swift
的空类。在这个文件中,我有以下源代码:
import UIKit
class Main {
var drinkData:PFObject?
init(drinkData:PFObject) {
self.drinkData = drinkData
}
}
在我的表视图中,当用户选择我正在执行的单元格保存Parse PFObject
时,可以在以后轻松访问它。在我的Table类中,我有以下代码:
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
以及此行中的所有项目),问题是我需要保存它然后才能访问它不同的阶级。
我的问题仍然存在。如何在不同的类中调用Main
drinkData
,并且能够像在上面的函数中一样打印它:
print("global : \(localDrinkData.drinkData)")
这是我获得此设计的原始源代码的地方。显然,我做了一些修改:Access variable in different class - Swift
非常感谢!
答案 0 :(得分:0)
您能够从类Main()访问相同数据的唯一方法是传递您正在更改的Main()实例。如果你想从其他类访问Main()而不需要传递Main()实例,我建议将Main()转换为Singleton类。
import UIKit
class Main {
static let sharedMain = Main()
var drinkData:PFObject?
}
如果你想在main中设置/访问数据,它将如下所示:
设置:Main.sharedMain.drinkData = //insert PFObject
阅读:let sharedData = Main.sharedMain.drinkData
旁注:我建议您将类的名称更改为“DrinkManager”,使用名为Main的自定义类会感觉不对。