Как сделать пустой объект в Swift - PullRequest
0 голосов
/ 17 мая 2019

Как инициализировать пустой объект в swift? Это то, что у меня есть, но оно тоже хочет параметры

var userInfo:User = User()

init(email: String, isVerified: String, profileImageURL: String, reputation: String, twitterHandle: String, userName: String) {
        self._email = email
        self._isVerified = isVerified
        self._profileImageURL = profileImageURL
        self._reputation = reputation
        self._twitterHandle = twitterHandle
        self._userName = userName
    }

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Я предполагаю, что вы создаете пустые объекты User, чтобы информация могла быть заполнена позже.С этим можно столкнуться с двумя проблемами: one , все свойства объекта должны быть переменными, а second , легко допустить ошибки и передать неверную информацию, поскольку объект невсегда соответствуют реальной сущности.

Лучшим подходом было бы определить набор параметров, которые являются обязательными для определения объекта User, и позволить всем остальным параметрам либо быть необязательными параметрами, либо дать им значения по умолчанию,Например, если мы выбираем имя пользователя и адрес электронной почты обязательными, а изображение профиля необязательно, а для isVerified по умолчанию установлено значение false:

class User {
    var userName: String
    var email: String
    var isVerified: Bool
    var profileImageURL: String?

    init(userName: String, email: String, isVerified: Bool = false) {
        self.userName = userName
        self.email = email
        self.isVerified = isVerified
    } 
}
1 голос
/ 17 мая 2019

Создайте класс / структуру с необязательными свойствами, подобными этим

struct Employee {//struct or class
    var name: String?
    var number: String?
    var position: String?
}

Затем вы можете создать объект без какого-либо значения с некоторым значением

let emp = Employee()
let emp = Employee(name: nil, number: nil, position: nil)
let emp = Employee(name: "abc", number: nil, position: "xyz")

Создав метод init спараметр значений по умолчанию можно игнорировать при создании объекта

struct Employee {
    var name: String?
    var number: String?
    var position: String?
    init(name: String? = nil, number: String? = nil, position: String? = nil) {
        self.name = name
        self.number = number
        self.position = position
    }
}
let emp = Employee()
let emp = Employee(name: "abc", number: "124", position: "xyz")
let emp = Employee(name: "abc", position: "xyz")
let emp = Employee(number: "124")
let emp = Employee(name: "abc", number: "124")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...