NSObject没有名为Key error的成员

时间:2015-02-26 10:07:24

标签: ios arrays json swift swifty-json

我需要以下面显示的格式构建一个JSON对象。

{
  "DeviceCredentials": {
    "UniqueId": "sample string 1"
  },
  "Handovers": [
    {
      "Occasions": [
        {
          "Id": 1
        },
        {
          "Id": 1
        }
      ]
    }
  ]
}

但是Occasions数组存在问题。 Occasion个对象的数量不尽相同。有时候只有一个场合,有时候会有多个场合。由于这是动态的,我编写了下面的方法来创建这个数组。

func getOccasionArray(handover: Handover) -> JSON {
    var occArray = [[String: NSNumber]]()
    for occ in handover.occasions {
        let occasion = occ as Occasion
        var obj = ["Id": occasion.id!]
        occArray.append(obj)
    }
    let json = JSON(occArray)
    return json
}

我使用SwiftyJSON库将创建的数组转换为JSON。这里的json变量的返回结果与只有一个场合的切换相似。

[
  {
    "Id" : 243468
  }
]

到目前为止一切顺利。问题是我无法将其插入更大的JSON响应中。简单地调用这样的方法会产生错误' NSObject'没有名为' Key'

的成员
var parameters = [String: NSObject]()

parameters = [
    "DeviceCredentials": [
        "UniqueId": "1212121212"
    ],
    "Handovers": [
        [
            "Occasions": getOccasionArray(handover)
        ]
    ]
]

我尝试将返回的值转换为数组getOccasionArray(handover).arrayValue,但没有更改。

有关如何解决这个问题的想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

你现在不需要SwiftyJSON:

让你的' getOc​​casionArray'返回[String:NSObject]

func getOccasionArray(handover: Handover) -> [String: NSObject] {
  var occArray = [[String: NSNumber]]()
  for occ in handover.occasions {
    let occasion = occ as Occasion
    var obj = ["Id": occasion.id!]
    occArray.append(obj)
  }
  return occArray
}

将参数定义为[String:NSObject]:

var parameters = [[String: NSObject]]()

var json: [String: NSObject] = getOccasionArray(handover)        

parameters = [["DeviceCredentials": ["UniqueId": "1212121212"], "Handovers": ["Occasions": json]]]