【问题标题】:How to create a dictionary with 2 arrays inside?如何创建一个包含 2 个数组的字典?
【发布时间】:2016-03-17 11:35:47
【问题描述】:

我想创建一个具有下一个结构的字典,通过 Alamofire 作为 JSON 发送到服务器:

{
    "user": {
        "firstName": "fName",
         "lastName": null,
         "img": null,
         "books": [
             {
                 "id": 1
             }, {
                 "id": 2
             }
         ]
    },

    "locale": "en",
    "gender": "male"
}

对于JSON的这种结构,我尝试了下一个:

let parameters: [[String: [String: String]], [String: String]]

但是有很多闭包,所以我对此感到困惑。你能帮我创建这个结构吗?

【问题讨论】:

标签: ios json swift nsdictionary


【解决方案1】:

Swift 标准库中的集合类型仅支持同质集合,即集合中的所有元素必须具有相同的类型。所以你不能声明一个数组,它的第一个元素的类型是[String: [String: String]],而它的第二个元素的类型是[String: String],如果这是你想要的。

这行得通:

let parameters = [
    "user": [
        "firstName": "fName",
        "lastName": NSNull(),
        "img": NSNull(),
        "books": [
            [ "id": 1],
            [ "id": 2]
        ]
    ],
    "locale": "en",
    "gender": "male"
]

parameters 的类型是[String: NSObject],其中NSObject 是字典中所有值的超类。请注意使用NSNullnull 值建模,这是NSJSONSerialization 所期望的。

【讨论】:

  • Alamofire 需要AnyObject,不需要强制NSObject
  • 是的,但是编译器推断的类型是[String: NSObject]
  • 它将我的NSNull() 打印为email = "<null>"; 可以吗?这里就像一个字符串
猜你喜欢
  • 2014-08-13
  • 2020-07-03
  • 2018-01-30
  • 2019-03-17
  • 1970-01-01
  • 2019-06-15
  • 1970-01-01
  • 2013-01-05
  • 2019-09-03
相关资源
最近更新 更多