首页 > 解决方案 > 如何从同一个 ViewController 的扩展中访问 var

问题描述

我在 ViewController 中创建了一个 var:

class ViewController: UIViewController {
var options: Options?

}

在 viewWillAppear 我设置选项

/ grab the options
    let optionsFetch: NSFetchRequest<Options> = Options.fetchRequest()

    do{
        let results = try coreDataStack.managedContext.fetch(optionsFetch)
        if(results.count > 0){
            options = results.first
        }
    }catch let error as NSError{
        print("\(error) is the error")
    }

我也有这个扩展:

extension UIViewController {
func myMethod() {
let color = options.color
}

我似乎无法从扩展中访问 options var。我找到了这篇文章,并认为我已经按照他们所说的进行了操作,但仍然没有运气。 在此处输入链接描述

标签: swiftuiviewcontrollerextension-methods

解决方案


你的扩展名错了。

extension ViewController {
    func myMethod() {
        let color = options.color
    }
}

您似乎扩展了默认 UIViewController类。你应该扩展你的ViewController类,它是你创建的子类UIViewController,你的变量options是可用的。


推荐阅读