Zac24
Zac24

Reputation: 2512

Insert an Object inside an Array swift

I'm getting an Object from API response which looks something like below.

"Home":[
{
"type":"Something",
"id":"Something",
"interval":3,
"category":"Something",
"title":"Something",
"vc":[]
},
{
"type":"Something",
"id":"Something",
"TableFooterDisclaimer":"",
"category":"Something",
"title":"Something",
"vc":[
{
"Something":"Something",
"id":0,
"Something":"Something",
"Something":"Something",
"Something":"Something",
"Something":"Something",
"Something":"Something",
},
{
"Something":"Something",
"id":1,
"Something":"Something",
"Something":"Something",
"Something":"Something",
"Something":"Something",
"Something":"Something",
},
{
"Something":"Something",
"id":2,
"Something":"Something",
"Something":"Something",
"Something":"Something",
"Something":"Something",
"Something":"Something",
}
]
},

I'm trying to insert one more record which looks like below.

let object : [String : Any] = [
"Something":"Something",
"id":1,
"Something":"Something",
"Something":"Something",
"Something":"Something",
"Something":"Something",
"Something":"Something",
]

This object I'm trying to insert inside vc array of the 1st index of Home, like below but getting issues.

if let serverArray = info["Home"] as? [[String: AnyObject]] {
     self.myArray = serverArray
     self.myArray![1]["vc"]?.insert(self.object, at: 0)
}

I have tried converting let object : [String:Any] to [String:AnyObject] but that also didn't work.

Upvotes: 0

Views: 607

Answers (1)

gcharita
gcharita

Reputation: 8327

You can try something like this:

if var serverArray = info["Home"] as? [[String: Any]] {
    if serverArray.count > 1 {
        var vcs = serverArray[1]["vc"] as? [[String: Any]]
        vcs?.insert(self.object, at: 0)
        serverArray[1]["vc"] = vcs
    }
    self.myArray = serverArray
}

But it's a little ugly.

Using Codable and JSONDecoder like @JoakimDanielson commented will be better.

Upvotes: 1

Related Questions