Тип 'example' не имеет члена sharedInstance - PullRequest
0 голосов
/ 29 июня 2018

Я создал класс и пишу одноэлементную функцию под названием «пример»

import UIKit

class example: NSObject {

class example {
    static let sharedInstance = example()
    var userInfo = (ID: "bobthedev", Password: 01036343984)
    // Networking: communicating server
    func network() {
        // get everything
    }
    private init() { }
}

}

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
    super.viewDidLoad()
    example.sharedInstance.userInfo
    // (ID "bobthedev", Password 01036343984)

    // ViewController One
    example.sharedInstance.userInfo.ID // "bobthedev"


}

Но я получаю ошибку * Тип "example" не имеет члена sharedInstance *

https://learnswiftwithbob.com/course/object-oriented-swift/singleton-pattern.html

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Вы встроили пример класса в пример, поэтому, когда вы выполняете example.sharedInstance, он является внешним, поэтому просто удалите внешний пример класса.

0 голосов
/ 29 июня 2018

Имя класса должно начинаться с заглавной буквы. Нет необходимости объявлять класс внутри класса, вам нужно объявить переменную для синглтона, пожалуйста, проверьте следующий код.

class Example {
    class var sharedInstance: Example {
            struct Singleton {
                static let instance = Example()
            }
            return Singleton.instance
        }
    var userInfo = (ID: "bobthedev", Password: 01036343984)
    // Networking: communicating server
    func network() {
        // get everything
    }
    private init() { }
}






class ViewController: UIViewController {
    override func viewDidLoad() {
    super.viewDidLoad()
    Example.sharedInstance.userInfo
    // (ID "bobthedev", Password 01036343984)

    // ViewController One
    example.sharedInstance.userInfo.ID // "bobthedev"


}
0 голосов
/ 29 июня 2018

Вы создали вложенный класс. Просто пропустите внутреннюю декларацию:

import UIKit

class Example: NSObject {
    static let sharedInstance = Example()
    var userInfo = (ID: "bobthedev", Password: 01036343984)
    // Networking: communicating server
    func network() {
        // get everything
    }
    private override init() { }
}

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        Example.sharedInstance.userInfo
        // (ID "bobthedev", Password 01036343984)

        // ViewController One
        Example.sharedInstance.userInfo.ID // "bobthedev"

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...