Как построить массив словарей в зависимости от значений определенной модели - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть псевдоним типа [String:Any]

public typealias Parameters = [String:Any]

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

var parameters: Parameters {
    switch self {
    case .addOFFProduct(let product):
        var parameters: Parameters!
        let code = product.code!
        let username = product.username
        let password = product.password
        if let productName = product.productName, let genericName = product.genericName, let countriesText = product.countriesText, let brandsText = product.brandsText, let storesText = product.storesText, let ingredientText = product.ingredientText, let quantity = product.quantity, let additivesText = product.additivesText, let categoriesText = product.categoriesText {
            parameters = [
                Constants.OffProduct.code:        code,
                Constants.username:               username,
                Constants.password:               password,
                Constants.OffProduct.productName: productName,
                Constants.OffProduct.genericName: genericName
            ]
        }
        return parameters
    }
}

Теперь мне нужнопостроить тип параметров в соответствии с производственными значениями, если они равны нулю, тогда он не будет добавлен в [String:Any].Например, если generic name равно nil, а все остальные - нет, параметры будут выглядеть следующим образом

parameters = [
    Constants.OffProduct.code:        code,
    Constants.username:               username,
    Constants.password:               password,
    Constants.OffProduct.productName: productName
    //GENERIC NAME REMOVED
]

Как мне добиться такой логики.Я не совсем понимаю.Спасибо

1 Ответ

0 голосов
/ 22 сентября 2018

Для каждого элемента сделать так

...