如何从同一ViewController的扩展名访问var

ice*_*omo 0 extension-methods uiviewcontroller swift

我在ViewController中创建了一个变量:

class ViewController: UIViewController {
var options: Options?

}
Run Code Online (Sandbox Code Playgroud)

在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")
    }
Run Code Online (Sandbox Code Playgroud)

我对此也有一个扩展:

extension UIViewController {
func myMethod() {
let color = options.color
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法从扩展程序内部访问var选项。我找到了这篇文章,并以为我已经按照他们的话做了,但还是没有运气。 在此处输入链接说明

Rak*_*tri 5

您的扩展名有误。

extension ViewController {
    func myMethod() {
        let color = options.color
    }
}
Run Code Online (Sandbox Code Playgroud)

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