我有这个单例类,我需要知道如何从不同的视图控制器调用projects变量,而不必编写长名称,例如:ProjectsManager.sharedInstance.projects
我不知道是否存在另一种方式来做到这一点。

class ProjectsManager: NSObject {

     static let sharedInstance = ProjectsManager()

     var projects = [Project]()

     //..

}

最佳答案

遵循swift 3命名约定,您可以用sharedInstance替换shared。这可以在UserDefaults.standardNotificationCenter.defaultUIApplication.shared等中看到。
此外,在视图控制器中,您可以简单地将属性集声明给该单例。
例如:

class ViewController: UIViewController {

    private var projectsManager = ProjectsManager.shared

    func doSomething() {
        let projects = projectsManager.projects
    }

    // ...

}

这两种方法都可以减少每次使用singleton时需要键入的内容的长度。

10-04 20:07