Возможно ли вернуть класс func самому классу? - PullRequest
0 голосов
/ 29 декабря 2018

Возможен ли класс func для возврата самого класса?И для чего используется функция currentUser? Спасибо

class FUser: FObject {
     class func currentUser() -> FUser {
       if let dictionary = UserDefaults.standard.object(forKey: "CurrentUser") as? [String: Any] {
          return FUser(path: "User", dictionary: dictionary)
       }
    return FUser(path: "User")
 }

class FObject: NSObject {
    init(path: String, subpath: String?) {
      super.init()
      pathX = path
      subpathX = subpath
   }

 convenience init(path: String) {
    self.init(path: path, subpath: nil)
   }
 }

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Первый возможный вариант - создать статический фабричный метод .Да, ты можешь это сделать.Просто верните новый экземпляр FUser объекта

class FUser: FObject {
    private override init() {...} // then make your init `private`
    class func currentUser() -> FUser {
        return FUser()
    }
}

Или, может быть, вы ищете singleton , статический экземпляркласса

class FUser: FObject {
    static var current = FUser()
}

тогда вы можете использовать его следующим образом

FUser.current
0 голосов
/ 29 декабря 2018

Если вы имеете в виду одноэлементный объект, то это способ сделать это:

class ClassA {

    static let shared = ClassA()

    private init() {
          // Init
    }
}

Поскольку init является частным, будет только один экземпляр.

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