Мне нужно создать объект JSON в формате, показанном ниже.NSObject не имеет члена с именем Key error
{
"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» не имеет члена с именем «Ключ».
var parameters = [String: NSObject]()
parameters = [
"DeviceCredentials": [
"UniqueId": "1212121212"
],
"Handovers": [
[
"Occasions": getOccasionArray(handover)
]
]
]
Я попытался преобразования возвращаемого значения в массив getOccasionArray(handover).arrayValue
, но без изменений.
Любая идея о том, как исправить это?
Спасибо.
К сожалению, у меня не может быть типа переменной 'parameters' как' JSON'. Вы видите, что мне нужно передать этот объект JSON в качестве параметра для запроса URL. Я использую Alamofire для обработки запросов HTTP, и он принимает только параметр в формате '[String: AnyObject]'. – Isuru
О, хорошо, это должно сработать, если вы оставите его как: [String: NSObject], пока вы меняете getOccasionArray, чтобы вернуть это тоже. Тогда вы можете держаться подальше от swiftyJSON. Я отредактировал сообщение выше – Gwendle
Спасибо. Это сработало! Хотя мне пришлось изменить тип возвращаемого метода метода getOccasionArray '' [[String: NSObject]] и 'occArray' на' [[String: NSObject]]() '. Теперь все работает нормально. Спасибо. – Isuru