【问题标题】:How to access a var from an extension of the same ViewController如何从同一个 ViewController 的扩展中访问 var
【发布时间】:2019-02-17 04:25:32
【问题描述】:

我在 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。我找到了这篇文章,并认为我已经按照他们所说的进行了操作,但仍然没有运气。 enter link description here

【问题讨论】:

  • 你扩展了错误的类; extension ViewController 可能是您想要的。
  • 您已经扩展了没有成员变量“选项”的通用 UIViewController 类。您必须改为扩展您的自定义 ViewController

标签: swift uiviewcontroller extension-methods


【解决方案1】:

你的扩展名有误。

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

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

【讨论】:

  • 我想我是这样扩展的,以便其他 UIViewControllers 可以使用该方法。
  • @icekomo。恐怕你不能那样做。但是,您可以继承 UIViewController 并添加选项变量并添加 myMethod 并在必要时使用该类,这就是您目前在 ViewController 中所拥有的。所以你可以只创建 ViewController 对象而不是 UIViewController 对象。或者创建另一个具有这个变量和方法的类,并使 ViewController 成为它的子类。
猜你喜欢
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多