Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何根据特定模型的值构建字典数组_Swift_Model_Url Parameters_Type Alias - Fatal编程技术网

Swift 如何根据特定模型的值构建字典数组

Swift 如何根据特定模型的值构建字典数组,swift,model,url-parameters,type-alias,Swift,Model,Url Parameters,Type Alias,我的类型别名为[String:Any] public typealias Parameters = [String:Any] 我有一个计算属性,它将根据模型值构建这些参数 var parameters: Parameters { switch self { case .addOFFProduct(let product): var parameters: Parameters! let code = product.code! l

我的类型别名为
[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
]

我怎样才能达到这样的逻辑呢。我很困惑。感谢您提供的每一件物品,请这样做

if genericName != nil {
    parameters.updateValue(genericName,forKey:Constants.OffProduct.genericName)
}
//

创建2个数组,一个用于常量,另一个用于我的值为零

let arrValues = [product.genericName, product.productName,,,,,,,,]
let keysArr = [Constants.OffProduct.genericName, Constants.OffProduct.productName,,,,,,,]

(0..<arrValues.count).forEach {

    if let value = arrValues[$0] {

      parameters[keysArr[$0]] = value 

    }

}
let arrValues=[product.genericName,product.productName,,,,,,]
让keysArr=[Constants.OffProduct.genericName,Constants.OffProduct.productName,,,,,,]

(0..Wow不知道
updateValue
这太棒了,现在就要测试1.
genericName
不能
nil
,因为它是用
if let
创建的。2.
updateValue
的目的是什么?目标不是更新值,目标是只有在值不是
nil
@rmaddy时才添加它他会删除if-let,你认为我在if-letsss里面是指这个吗?像[]create这样的updateValue如果不存在,使用任何人都没有问题我想我需要创建
var参数=[]
首先使用非可选值,然后从
forEach
right添加其他值。是的,声明它将在forEach内部动态更改