Адаптируешься к постоянно меняющейся модели Swift iOS? - PullRequest
0 голосов
/ 15 ноября 2018
class User {
    var uid : String
    var profileImageURL : String

    init(uid : String, profileImageURL : String) {
        self.uid = uid 
        self.profileImageURL = profileImageURL
    }
}

Если бы мой проект начинался с модели пользователя, такой как та, что приведена выше, и у меня было бы масштабное приложение, в котором этот пользователь инициализируется в более чем 20 файлах, если бы мне пришлось войти и добавитьновое обязательное свойство, такое как age, я должен исправить свои инициализаторы для каждого файла.Хуже того, мне нужно было бы входить после каждого инициализатора и устанавливать новое свойство в отдельной строке.

Если бы мне потребовалось добавить 25 новых свойств по ходу производства, это было бы кошмаром.

Как лучше всего справиться с такими большими моделями, которые могут измениться в будущем?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Я бы не инициализировал объект в 20+ локациях.Это делает код хрупким.Поместите дополнительный слой, такой как управление пользователями, где вы можете спросить текущего пользователя / спросить любого пользователя.И сделать инициацию там, в одном месте.

0 голосов
/ 15 ноября 2018

Вы делаете что-то вроде этого

class User {

    var uid : String
    var profileImageURL : String

    init(all : [String:Any]) {
        self.uid = all["uid"] as? String ?? ""
        self.profileImageURL = all["profileImageURL"] as? String ?? ""
    }
}

или пишете класс Codable для прямого декодирования словаря

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