Пользовательская структура init в Swift - PullRequest
0 голосов
/ 02 марта 2019
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, чтобы он использовался как словарь, но я хочу добавить свойство твитов (без init или обойти init), чтобы получить доступ к моей другой структуре, но компилятор выдает ошибку.Как я могу инициализировать?

var tweets: [Tweet] 

1 Ответ

0 голосов
/ 02 марта 2019

Просто напишите

self.init(userID: userID, nameSurname: nameSurname, email: email, password: password, profileImageUrl: profileImageUrl, tweets: [])

В противном случае объявите пустой массив и добавьте явный метод init, опуская tweets

...