【问题标题】:How to add values in swift dictionary dynamically如何在swift字典中动态添加值
【发布时间】:2014-10-13 09:44:54
【问题描述】:

我在我的 swift 类中声明了一个字典,如下所示:

var profileDetail = Dictionary<String, String>()

但我无法在其中添加值。 如果我尝试如下,它只存储最后一个值。

profileDetail = [profileItem[1]:values.valueForKey("middle_name") as String]
profileDetail = [profileItem[2]:values.valueForKey("last_name") as String]
profileDetail = [profileItem[3]:values.valueForKey("gender") as String]
profileDetail = [profileItem[4]:values.valueForKey("birth_date") as String]
profileDetail = [profileItem[5]:"\(add1),\(add2)"]
profileDetail = [profileItem[6]:values.valueForKey("email") as String]

或者以下给了我不正确的键异常:

ProfileDetail.setValue(values.valueForKey("first_name") as String, forKey: profileItem[0])
ProfileDetail.setValue(values.valueForKey("middle_name") as String, forKey: profileItem[1])
ProfileDetail.setValue(values.valueForKey("last_name") as String, forKey: profileItem[2])
ProfileDetail.setValue(values.valueForKey("gender") as String, forKey: profileItem[3])
ProfileDetail.setValue(values.valueForKey("birth_date") as String, forKey: profileItem[4])
ProfileDetail.setValue("\(add1),\(add2)", forKey: profileItem[5])
ProfileDetail.setValue(values.valueForKey("email") as String, forKey: profileItem[5]) 

我参考了苹果的文档,但没有发现任何有用的东西。 在Dictionary 中动态添加值的正确方法是什么?

【问题讨论】:

    标签: ios swift dictionary collections ios8


    【解决方案1】:

    在这一行中,您正在实例化一个字典:

    var profileDetail =  Dictionary<String, String>()
    

    profileDetail 变量标识,但在所有其他后续行中,您不断将该变量重新分配给其他东西。也许这可以更好地解释您所犯的错误:

    var x: Int = 1
    x = 2
    x = 3
    x = 4
    

    每一行都为同一个变量分配一个新值,所以之前的值会丢失。

    我认为您应该将每一行替换为以下内容:

    profileDetail[profileItem[1]] = values.valueForKey("middle_name") as String
    

    或者更好的是,您可以在单个语句中进行如下初始化:

    var profileDetail = [
        profileItem[1]: values.valueForKey("middle_name"),
        profileItem[2]: values.valueForKey("last_name"),
        ...
    ]
    

    如果此字典在实例化后不应修改,您也可以将 var 更改为 let

    【讨论】:

    • 这是我第一次在 Swift 中使用它,因此我不知道如何在单个语句中进行初始化。谢谢你这么详细的解释
    猜你喜欢
    • 2023-03-08
    • 2015-08-24
    • 1970-01-01
    • 2020-07-24
    • 2021-04-24
    • 1970-01-01
    • 2011-11-04
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多