我在ViewController.swift文件中有一些变量,它位于应用程序的根目录中(默认位置) 我想在KeyboardViewController.swift文件中使用它们,该文件位于自定义键盘目标
中如何访问这些变量?
为了更清楚我想从目标中的视图控制器访问我在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.
}
}
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") {
}
}
}
答案 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!")
}