【问题标题】:swift: Add multiple <key, value> objects to NSDictionaryswift: 将多个 <key, value> 对象添加到 NSDictionary
【发布时间】:2026-02-06 06:45:02
【问题描述】:

我正在尝试向 NSDictionary 添加多个对象,例如

var myDict: NSDictionary = [["fname": "abc", "lname": "def"], ["fname": "ghi", "lname": "jkl"], ...]

甚至有可能做到这一点吗?如果没有,请提出更好的方法。我实际上需要将此 NSDictionary 转换为 JSON 字符串并将其发送到服务器,因此我需要 NSDictionary 中的多个对象。

【问题讨论】:

  • 你试过了吗?然而,这看起来像一个字典数组
  • 嗯,你的根对象有一个数组而不是字典,所以就是这样......

标签: ios json swift nsdictionary key-value


【解决方案1】:

你绝对可以制作一本字典。但是,您需要使用不同的语法:

var myDictOfDict:NSDictionary = [
    "a" : ["fname": "abc", "lname": "def"]
,   "b" : ["fname": "ghi", "lname": "jkl"]
,   ... : ...
]

不过,您所拥有的看起来像一个 数组 字典:

var myArrayOfDict: NSArray = [
    ["fname": "abc", "lname": "def"]
,   ["fname": "ghi", "lname": "jkl"]
,   ...
]

为了得到像这样的 JSON

{"Data": [{"User": myDict1}, {"User": myDict1},...]}

您需要将上述数组添加到字典中,如下所示:

var myDict:NSDictionary = ["Data" : myArrayOfDict]

【讨论】:

  • 如果我使用字典数组,那么是否可以将其转换为 JSON 字符串?并在服务器端提取数据?
  • @SrujanSimha 我很确定,对于标准集合类型的任何组合,转换为 JSON 都应该没有问题。至于服务器端,需要看服务器支持的格式。要对此进行测试,请将您的字典数组转换为 JSON 字符串,并写入日志。检查字符串是否与您的服务器期望的一样,并在必要时进行调整。
  • 好的。假设我有一本字典 myDict1 = ["name": "abc", "status": 1] 并且有多个人,我为每个人创建了 myDict1 并将其添加到另一个字典中,例如 ..myDict2 = ["User": myDict1]。那么我可以为同一个键设置多个值吗?就像 JSON:{"Data": [{"User": myDict1}, {"User": myDict1},...]}
  • @SrujanSimha 同一个键不能有多个项目。您的示例显示了一个带有 array 的键。请参阅编辑以获取示例。
  • 是否需要指定变量类型为NSDictionaryNSArray?如果没有,你会丢掉一堆 Swift 类型信息......
【解决方案2】:

SWIFT 3.0

  • 列表项

首先你可以创建 NSArray,然后你可以使用 setvalue(forKey:) 默认方法在 NSMutableDictionary 中设置数组。

var arrFname : NSArray!

arrFname = ["abc","xyz","mno"]

var arrLname : NSArray!

arrFname = ["tuv","xuv","swift"]

var dicSet : NSMutableDictionary!

dicSet.setObject(arrFname, forKey : "Fname")

dicSet.setObject(arrLname, forKey : "Lname")

print(dicSet)                                           

【讨论】:

    【解决方案3】:
    var tempDict = NSMutableDictionary()
    
    tempDict.setValue("sam", forKey : "one")
    
    print(tempDict["one"] ?? "1")
    

    【讨论】: