快速创建全局变量

Rob*_*ith -2 xcode swift swift3

我试图从我的视图控制器(在类内部但在函数外部)创建全局变量,如下所示:

var modelData: CustomTabBarController.model   // THE ERROR IS HERE
Run Code Online (Sandbox Code Playgroud)

这是该类的定义方式:

CustomTabBarController.swift:

import UIKit

// This class holds the data for my model.
class ModelData {
    var name = "Fred"
    var age = 50
}

class CustomTabBarController: UITabBarController {

    // Instantiate the one copy of the model data that will be accessed
    // by all of the tabs.
    var model = ModelData()

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

"'model' is not a member type of "CustomTabBarController"
Run Code Online (Sandbox Code Playgroud)

如何声明它以便可以访问模型?谢谢。

更新#1 对不起,我忘了提及这一点:

我需要模型数据在标签栏的每个标签中都相同。例如,如果我在第一个标签中将年龄更改为51,则第二个标签栏应检索51。以上是使用这种方法的正确方法吗?

更新#2

我可以根据院长的建议在函数内创建变量:

func setupModelData()
{
  var modelData = (self.tabBarController as! CustomTabBarController).model
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为我需要从其他函数访问modelData。当我尝试将此行移到函数外时,如下所示:

import UIKit

class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
{
 var modelData = (self.tabBarController as! CustomTabBarController).model
...
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Value of type '(NSObject) -> () -> FirstViewController' has no member 'tabBarController'
Run Code Online (Sandbox Code Playgroud)

Rob*_*ith 6

我最终遵循了Holex关于创建共享类(单个)的建议:

import UIKit
class ModelData: NSObject {
    static let shared: ModelData = ModelData()
    var name = "Fred"
    var age = 50
}
Run Code Online (Sandbox Code Playgroud)

在第一视图中书写:将年龄设置为51:

ModelData.shared.age = 51
Run Code Online (Sandbox Code Playgroud)

在第二视图中阅读:享年51岁

let age = ModelData.shared.age
Run Code Online (Sandbox Code Playgroud)