Как создать экземпляр класса статическими методами? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть класс для управления моей базой данных SQLite, поэтому у меня есть статическая переменная для хранения моего пути к базе данных.

class SQLite {

    static let fileUrl = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true).appendingPathComponent(SQLiteManager.databaseName())
    .
    .
    . // static methods...
    static func readById<T: ObjectInit>(tabela: String, id: Int, typeClass: T.Type) -> T { ... }
}

Но когда я изменяю зарегистрированного пользователя, мне нужно повторно создать этот экземпляркласс без перезагрузки приложения, поэтому я делаю это?

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете просто сделать fileUrl изменяемым, и когда пользователь выйдет из системы, затем снова войдите в систему, вы можете обновить fileUrl новым значением.

static var fileUrl = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true).appendingPathComponent(SQLiteManager.databaseName())

func login(){
    //Do all login related tasks
    ...
    // After the user is logged in and SQLiteManager.databaseName() is updated
    SQLite.fileUrl = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true).appendingPathComponent(SQLiteManager.databaseName())
}

Вы также можете сделать fileUrl aвычисляемое свойство, но если вам действительно нужно обновить его только после того, как пользователь вышел из системы, а затем снова вошел и использовал fileUrl гораздо чаще, чем переключение пользователя, было бы излишним пересчитывать fileUrl каждый раз, когда вы получаете к нему доступ.

Другой возможностью было бы пересчитать fileUrl из SQLiteManager.databaseName(), предполагая, что функция - это пользовательская функция, которую вы можете изменять, а не метод из сторонней библиотеки.

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