1) В этом утверждении нет наследования, все происходит просто:
Модель представляет собой представление реальных / воображаемых вещей в небольшом мире простыми способами.Это означает, что модель «Пользователь» представляет пользователя приложения и содержит все, что необходимо для этого представления.
Например, что нужно, чтобы пользователь однозначно распознал системный Email / username или оба, например.Очевидно, что модель может содержать что-нибудь полезное, например, чтобы сделать заказ, модель должна содержать даже адрес.
Теперь важно то, что модель - это просто модель, и это означает, что вы можете использовать эту модель.буквально создавать пользователей в вашей системе / приложении.
Чтобы написать что-то вроде
var loginUser: User
Может быть, в случае приложения iOS в контроллере представления означает, что контроллер должензнать, кто является пользователем, который использует приложение.
Итак, loginUser
- это переменная, представляющая экземпляр модели User
, что означает, что loginUser
is-a User
, а не его наследование.
Более технически, в вашем случае, если ваш User
класс (модель) содержит, например, свойство email
, вы можете получить доступ к этому электронному письму с помощьюнаберите logInUser.email
и сделайте что-то вроде показа или использования его для аутентификации и т. д.
Обратите внимание, что я использовал работу class
, которая на самом деле является моделью, тогда как logInUser
являетсяобъект, который является instance класса, то есть конкретизация класса.Это означает, что вы можете иметь несколько объектов одного и того же класса, представляющих разных пользователей, например: var adminUser: User, var customerUser: User, var loggedInUser: User
, которые являются разными пользователями с разной информацией, и поэтому они являются разными экземплярами одного и того же класса.
checkэто объяснение программирования объекта
2) Восклицательный знак - это принудительное развертывание, это означает, что пользователь может или не может существовать, и ему не нужна его инициализация в init, потому что это может быть nil
(но вы должны указать правильное значение, чтобы использовать его), что означает «несуществующий».На самом деле, запись var someV: User?
говорит, что ваша переменная может содержать тип User
или значение nil
.
Разница вашей записи с !
от
var logInUser: User?
в том, что когда вы используете переменную, если вы объявили ее с !
, вы можете использовать ее, не разворачивая ее:
func someFunction(){
var email = logInUser.email
}
Но это может закончиться неудачей, если вы не инициализировали logInUser
где-нибудь.
Если вы использовали вместо него ?
, вам нужно развернуть его:
func someFunction(){
var email = logInUser?.email
// OR
var email2 = logInUser!.email
}
Разница в предыдущем использовании logInUser
заключается в том, что logInUser?.email
может вернуть nil
, в то время как logInUser!.email
попытайтесь принудительно развернуть, и если это не удастся, ваше приложение упадет.