在swift中从目标访问变量

时间:2016-03-26 22:51:16

标签: ios swift

我在ViewController.swift文件中有一些变量,它位于应用程序的根目录中(默认位置) 我想在KeyboardViewController.swift文件中使用它们,该文件位于自定义键盘目标

如何访问这些变量?

为了更清楚我想从目标中的视图控制器访问我在ViewController.swift中声明的变量。

the photo will help too

你可以在这里看到我遇到问题的示例代码:

ViewController.swift

import UIKit

public var globalVar = "defaultColor"

class ViewController: UIViewController {

    @IBAction func buttonA(sender: UIButton) {

        globalVar = "ColorA"

    }

    @IBAction func buttonB(sender: UIButton) {

        globalVar = "ColorB"

    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

KeyboardViewController.swift

import UIKit

class KeyboardViewController: UIInputViewController {

    override func updateViewConstraints() {
        super.updateViewConstraints()

        // Add custom view sizing constraints here
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        if (globalVar == "defaultColor" /* The error is here it says use of unresolverd identifier 'globalVar' */) {

        } else if (globalVar == "ColorA") {

        } else if (globalVar == "ColorB") {

        }

    }

}

2 个答案:

答案 0 :(得分:0)

如果您需要从扩展程序中访问文件,您只需将该文件添加到扩展程序目标。

但是,如果您正在处理扩展,请注意您无法访问每个扩展中存在的类的相同实例。您必须在扩展中创建一个单独的实例,并使用该实例。

答案 1 :(得分:0)

我的问题已经通过app组解决了。谢谢大家

解决方案:

1:点击应用程序>打开应用程序和目标的应用程序组。功能

2:点击加号并设置应用组的名称(例如:group.company.appname)请注意应用和目标应该相同

3:像这样设置NSUserDefaults

var defaults = NSUserDefaults(suiteName: "group.company.appname")
defaults?.setObject("Worked!", forKey: "Alarm")
defaults?.synchronize()

4:在此处阅读NSUserDefaults(如在目标中)

// Check for null pressEffect
if let restoredDefault =  defaults!.stringForKey("Alarm") {
     print(restoredDefault)
} else {
     print("Not Working!")
}