繁体   English   中英

扩展 class 中的 Var 显示错误“扩展不得包含存储的属性”

[英]Var in extension class show error “Extensions must not contain stored properties”

因为我有很多变量,我想放入新文件。 当我将 var 移动到扩展中的新文件时,出现错误“扩展不得包含存储的属性”。 我该如何解决? “清理” var 的最佳方法是什么? 这是我的代码:

Class:

class ReminderMain: UIViewController {
   override func viewDidLoad() {
      //Do something
   }
}

扩大:

extension ReminderMain {
   var greeting = UILabel()
}

您真正需要的是遵循您的项目的架构,例如MVCMVPMVVM ,这些都是流行的(还有更多)。 这些架构使您能够清理代码并维护项目的结构。

现在对于您在上面解释的场景,您似乎有许多存储属性,例如var greeting = UILabel()您可能希望将它们移动到视图 class 并仅使用一个视图来设置 controller 的视图。 这是一个示例(在 MVC 中):

class ViewController: UIViewController {
    let myView = View()
    override func loadView() {
        super.loadView()
        view = myView
        myView.model = Model(greetingText: "My greeting")
    }
}

class View: UIView {
    var model: Model? {
        didSet { greeting.text = model?.greetingText }
    }
    var greeting = UILabel()
    override init(frame: CGRect) {
        super.init(frame: frame)
        addSubview(greeting)
        // add all other sub-views and layout them here
    }
}
struct Model { var greetingText: String }

有关重构 go 的更多详细信息,请通过更好、更详细地解释这一点的教程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM