#swift #struct #properties
#swift #структура #свойства
Вопрос:
struct User {
var userID: String
var nameSurname: String
var email: String
var password: Int
var profileImageUrl: String
var userDictionary: [String: Any] {
return [
"userID": userID,
"nameSurname": nameSurname,
"email": email,
"password": password,
"profileImageUrl": profileImageUrl,
]
}
}
extension User {
init?(dictionary: [String: Any]) {
guard let userID = dictionary["userID"] as? String,
let nameSurname = dictionary["nameSurname"] as? String,
let email = dictionary["email"] as? String,
let password = dictionary["password"] as? Int,
let profileImageUrl = dictionary["profileImageUrl"] as? String else { return nil }
self.init(userID: userID, nameSurname: nameSurname, email: email, password: password, profileImageUrl: profileImageUrl)
}
}
let user = User(userID: "burak", nameSurname: "burak", email: "burak", password: 1234, profileImageUrl: "brk")
print(user.userDictionary)
Я создал пользовательскую структуру для хранения моего свойства и записи метода init для доступа к нему как к словарю, но я хочу добавить свойство tweets (без инициализации или в обход инициализации), чтобы получить доступ к моей другой структуре, но компилятор выдает мне ошибку. Как я могу инициализировать?
var tweets: [Tweet]
Ответ №1:
Просто напишите
self.init(userID: userID, nameSurname: nameSurname, email: email, password: password, profileImageUrl: profileImageUrl, tweets: [])
В противном случае объявите пустой массив и добавьте явный init
метод, исключающий tweets
Комментарии:
1. Я объявил пустой массив, но из-за компилятора self.init выдает «Не удается вызвать ‘User.init’ со списком аргументов типа» эта ошибка
2. @johndouglas просто добавьте следующий параметр (tweets) и передайте пустой массив
3. Но если я объявлю массив, как я могу получить доступ к свойствам структуры Tweet ?
4. Массив предлагал не я, а вы. Используйте цикл или
filter
илиmap
в зависимости от того, что вы собираетесь выполнить.5. Я пытался спросить, как я могу обойти это свойство, которое используется без объявления в инициализаторе по умолчанию. Должен ли я создавать пользовательский инициализирующий параметр, присваивающий нулевое значение свойству tweet?